请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

自己写的Promise是不和原生的Promise有些区别呢

function loadImg(src) {
    const promise = new myPromise(function(resolve, reject){
        let img = document.createElement("img");
        img.onload = function() {
            resolve(this);
        } ;
        img.onerror = function() {
            reject();
        }
        img.src = src;
    }); 
    return promise;
}
const my = loadImg("https://img1.sycdn.imooc.com//55deec9c0001418c38402160-100-100.jpg");
my.then(function(){
    console.log("ok1");
},function(){
    console.log("error");
})

这里是不是因为img.onload是异步的,所以才会先执行then方法,然后resolve();
假如我这边换成这样:

function loadImg(src) {
    const promise = new myPromise(function(resolve, reject){
        if (true) {
            resolve(this);
        }
    }); 
    return promise;
}

const my = loadImg("https://img1.sycdn.imooc.com//55deec9c0001418c38402160-100-100.jpg");
my.then(function(){
    console.log("ok1");
},function(){
    console.log("error");
})

then里面的方法没有加载进入resolve就执行了;但是原生Promise不会出现这个问题

正在回答

1回答

双越 2019-03-05 14:34:07

本解释为了找一个实例来演示状态模式,promise 大家都知道,也好理解。

我们实现的 promise 比较基础,没考虑太多复杂情况,肯定和原生 promise 有区别的。

我觉得,本节重点理解状态模式。

1 回复 有任何疑惑可以回复我~
  • 提问者 东风破 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-03-05 14:55:09
  • 双越 回复 提问者 东风破 #2
    客气了。感觉课程有帮助,欢迎给一个好评哈。
    回复 有任何疑惑可以回复我~ 2019-03-05 15:41:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信