gpt4 book ai didi

javascript - 如何将参数传递给链式 Promise 回调

转载 作者:行者123 更新时间:2023-12-03 12:05:13 25 4
gpt4 key购买 nike

如何使用 q.promises 将参数传递给 Sequence Promises

var argumentsArray = ["PARAM1", "PARAM2", "PARAM3"]
var arr = [];
function aJaxCall(argumentsArray) {
var deferred = Q.defer();
$.ajax({
type: 'POST',
/*
Here i want to get the passed parameter and use it
in my post request
*/
url: 'someurl.com' + PARAMS,
// data: data,
dataType: 'text',
success: function (data) {
arr.push(data);
deferred.resolve(data);
}
});
return deferred.promise;
}

var result = Q();
for (var i = 0, len = argumentsArray.length; i < len; i++) {
/* Pass the argumentsArray[i]
for each then call, i want to be able to pass
the current argumentsArray value
*/
result = result.then(aJaxCall);
}

到目前为止,我尝试使用 aJaxCall 函数本身的属性,并且然后用arguments.calee.prop处理它

for (var i = 0, len = argumentsArray.length; i < len; i++) {
aJaxCall.prop = argumentsArray[i];
result = result.then(aJaxCall);
}

然后在 aJaxCall 函数中我尝试获取如下参数:

arguments.callee.prop

但它总是绑定(bind)argumentsArray中的最后一个元素,导致for循环完成并且.then在循环中稍后被触发。任何建议都将受到高度赞赏。

最佳答案

您可以创建一个返回匿名函数的方法,该函数使用传递的参数调用 ajaxCall:

var callWithArgs = function(arg) {
return function () {
return ajaxCall(arg);
}
}

for (var i = 0, len = argumentsArray.length; i < len; i++) {
result = result.then(callWithArgs(argumentsArray[i]));
}

关于javascript - 如何将参数传递给链式 Promise 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25217336/

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