Eri*_*vre 1 javascript callback promise
在使用javascript异步错误捕获机制时,我最终问自己使用promise而不是回调之间的区别,除了事实承诺可能更多的糖语法.
例如,让我们考虑一下
function setPromise() {
var message = "awesome";
var deferred = new $.Deferred();
setTimeout(function(){deferred.resolve(message)},3000);
return deferred.promise();
}
var promise = setPromise();
promise.done(function (message) {
console.log("promise done with message : " + message);
});
Run Code Online (Sandbox Code Playgroud)
和
function setCallback(doneCallback) {
var message = "awesome";
setTimeout(function(){doneCallback(message)},3000);
}
setCallback(callback)
function callback(message) {
console.log("callback done with message : " + message);
}
Run Code Online (Sandbox Code Playgroud)
两者都充当闭包,都允许返回参数等.
那有什么区别?
Promise建立在回调之上.后者更原始,更通用,当你需要做一些复杂的事情时,需要做更多的工作.
对于你的例子,他们做了几乎相同的事情.但是,假设您希望同时解决三个问题(想象同时通过AJAX请求三个资源),并在完成所有这三个操作时继续.承诺是微不足道的,因为基本上没有任何改变; 但是使用回调,你需要设置一些标志/计数器,并自己识别成功和失败状态 - 更多的工作.