在我的 Javascript 应用程序(jQuery)中,我有两个异步触发的事件
- 小部件 1 在完成加载时触发“Event1”
- 小部件 2 在完成加载时触发“Event2”
我如何“同步”这两个异步事件,以便仅在这两个事件触发后“调用方法”。
我需要一种适用于多个事件的方法。
在我的 Javascript 应用程序(jQuery)中,我有两个异步触发的事件
我如何“同步”这两个异步事件,以便仅在这两个事件触发后“调用方法”。
我需要一种适用于多个事件的方法。
使用延迟对象。
var deferredObj1 = $.Deferred(),
deferredObj2 = $.Deferred();
$.when(deferredObj1,deferredObj2).done(function(){
console.log("They are both done!");
});
// inside the Event1 handler:
deferredObj1.resolve();
// inside the Event2 handler:
deferredObj2.resolve();
您可能想看看async.js
哪个提供了一种非常有趣且干净的方式来同步异步操作的执行。
例如,该waterfall
方法允许您按顺序链接异步操作。
在您的实际代码中,这样的执行看起来既漂亮又简单:
async.waterfall([
function(callback){
callback(null, 'one', 'two');
},
function(arg1, arg2, callback){
callback(null, 'three');
},
function(arg1, callback){
// arg1 now equals 'three'
callback(null, 'done');
}
], function (err, result) {
// result now equals 'done'
});