我无法用"然后"绕着链接功能缠绕我的脑袋。和延期对象。
我希望将多个函数(进程)链接在一起,以便在完成Async调用的一个函数之后,另一个函数启动,依此类推。
类似的东西:
process1().then(process2()).then(process3());
我已经按照许多不同的教程进行了不同的操作,但我仍然无法得到一个有效的例子。
我错过了什么?
答案 0 :(得分:1)
您错过了要求部分(require(["dojo/Deferred"]
),现代道场使用AMD
加载来加载所需的模块,在您将在代码中使用的回调函数中进行引用。
这是一个有效的Fiddle
在上面的小提琴中,我选择dojo作为lib并添加一些配置如下图所示
以下代码段:
require(["dojo/Deferred",],function(Deferred){
function process1() {
var dfd = new Deferred();
// perform some async logic; resolve the promise
setTimeout(function () {
$("#output").html("process 1 complete");
dfd.resolve("process 1 complete");
}, 1000);
return dfd.promise;
}
function process2() {
var dfd = new Deferred();
// perform some async logic; resolve the promise
setTimeout(function () {
$("#output").html("process 2 complete");
dfd.resolve("process 2 complete");
}, 1000);
return dfd.promise;
}
process1().then(function (){
return process2();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output">Start</div>
另请注意,您可以进行多次链接,如Fiddle
中所示