我想用dojo Deferred编写一个回调函数。我写了两个函数,a和b
function a() {
for(var i = 0; i < 3000; i++) {
....
}
}
需要更多时间,循环只是一个例子,也许是别的东西。
function b() {
console.log("b");
}
我希望b可以等待a,就像a.then(b),即a完成后,然后b开始运行。如果我写了一个(); b(); 结果不是我想要的,因为b比a快。通常我使用setTimeout,我认为它不好。 例如,a()可能需要100s,但是setTimeout我设置50s,这不行吗?
如何编写使用Deferred,可以重写我的函数,如a()和b(),也就是说,一个函数等待另一个函数。
谢谢!
答案 0 :(得分:0)
它应该与此类似:
require(["dojo/Deferred", "dojo/dom", "dojo/on", "dojo/domReady!"],
function(Deferred, dom, on){
function a(msg){
var deferred = new Deferred();
setTimeout(function(){
deferred.resolve(msg);
}, 1000);
return deferred.promise;
}
function b() {
console.log("b");
}
on(dom.byId("startButton"), "click", function(){
var a= a("message");
a.then(function(results){
console.log("Finished with result:"+results);
b();
});
});
});