javascript - ES6 Promise和JQuery中Promise的区别?
黄舟
黄舟 2017-04-11 12:31:55
0
2
395

大家能解释一下,为啥用ES6 Promise和JQuery Promise输出的结果为啥不一样吗?

1.使用JQuery Promise

var log = console.log;

function MyPromise(fun){
  var deferred = $.Deferred();
  fun(deferred.resolve, deferred.reject);
  return deferred.promise();
}

setTimeout(function () {
    log(1);
});

new MyPromise(function(resolve, reject){
  log(2);
  resolve();
  log(3);
}).then(function(){
  log(4);
});

log(5);

输出结果如下:

2.使用ES6 Promise

var log = console.log;
setTimeout(function () {
    log(1);
});

new Promise(function (resolve) {
    log(2);
    resolve();
    log(3);
}).then(function () {
    log(4);
});

log(5);

输出结果如下:

为什么不一样呢?

3.上面两个Promise和下面这个又有什么不一样呢?

var log = console.log;

function MyPromise(fun){
  return {
      then: function(resolve, reject){
        fun(resolve, reject);
      }
  };
}

setTimeout(function () {
    log(1);
});

new MyPromise(function(resolve, reject){
  log(2);
  resolve();
  log(3);
}).then(function(){
  log(4);
});

log(5);

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

reply all(2)
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!