javascript - ES6 Promise和JQuery中Promise的区别?
本文介绍了javascript - ES6 Promise和JQuery中Promise的区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
大家能解释一下,为啥用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);
解决方案
因为jquery的promise的回调不保证是异步的,而es6的保证是异步的,明显es6更合理,更可控
这篇关于javascript - ES6 Promise和JQuery中Promise的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文