【发布时间】:2016-12-01 22:02:28
【问题描述】:
我想用promise一个接一个地链接多个函数,每个函数都进行一次AJAX调用。
类似这样的:
function myfunction1() {
console.log("myfunction1");
return $.ajax({
url: "/"
}).always(function() {
console.log("myfunction1 done");
});
}
function myfunction2() {
console.log("myfunction2");
return $.ajax({
url: "/"
}).always(function() {
console.log("myfunction2 done");
});
}
myfunction1()
.then(myfunction2());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
在调用myfunction2 之前,我需要运行myfunction1 的回调。
所以我需要这个订单:
myfunction1
myfunction1 done
myfunction2
myfunction2 done
但代码示例按以下顺序运行:
myfunction1
myfunction2
myfunction1 done
myfunction2 done
任何帮助将不胜感激
解决方案:
不需要括号
myfunction1().then(myfunction2);
代替:
myfunction1().then(myfunction2());
感谢@bergi
【问题讨论】:
-
.then(myfunction2());立即调用该函数并将结果承诺传递给then。你想传递一个回调:.then(myfunction2). -
哇,我差点错过这条评论,它解决了我的问题,非常感谢!
-
@inverz - 在这个网站上,您永远不应该将解决方案编辑到您的问题中 - 永远。问题是问题。如果没有其他人发布答案并且您找到了解决方案,您可以自己发布答案。或者,如果其他人已经发布了答案,那么您可以通过选中该答案旁边的绿色复选标记来接受该答案。这将向社区表明您的问题现已得到解答。
标签: javascript jquery ajax promise deferred