gpt4 book ai didi

angularjs - 在 Angular 中使用 $q 链接 promise

转载 作者:行者123 更新时间:2023-12-04 14:46:10 24 4
gpt4 key购买 nike

我试图链接 promise ,以便 doQuery(0) 执行然后 doQuery(1) 等......顺序直到 doQuery(9)。

我的问题是在回调函数中 i 总是等于 10。

doQuery(0) 然后执行 doQuery(10)。

如何在回调函数中传递 i 的每个值?

var promise = doQuery(0);
for (var i = 1; i < 10; i++) {
promise = promise.then(function() {
doQuery(i);
});
};

最佳答案

由于您使用的是 Angular.js,您应该使用它的 bind function这里:

var promise = doQuery(0);
for (var i = 1; i < 10; i++) {
promise = promise.then(angular.bind(null, doQuery, i));
}

在不依赖 Angular.js 的情况下,您可以使用闭包来复制 i对于每个回调函数(而不是让它们在外部范围内共享 i 的单个副本):
var promise = doQuery(0);
for (var i = 1; i < 10; i++) {
promise = promise.then(function(i){
return function(){
doQuery(i);
};
}(i));
}

在现代 Javascript 引擎中,您还可以使用 native Function.prototype.bind :
var promise = doQuery(0);
for (var i = 1; i < 10; i++) {
promise = promise.then(doQuery.bind(null, i));
}

关于angularjs - 在 Angular 中使用 $q 链接 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18817572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com