我的步骤数组如下:
var stepsToDo = [step1, step2, step3,...]
每一步都会调用ajax:
function step1() { return $.ajax({ ... }); }
function step2() { return $.ajax({ ... }); }
步骤 1
的示例 Ajax 调用(步骤 2
和其他类似):
return $.ajax({
url: "test.php",
type: "POST",
dataType: "json",
data: {"step-1": ""},
beforeSend: function () {
writeResult("Processing-> test 1");
},
success: function (result) {
if (result) {
if (result instanceof Array) {
writeResult("Found: " + result.length + " items");
arr = result;
} else {
writeResult(result);
arr = [];
}
}
}
});
function writeResult(str) { console.log(str); }
我想按顺序执行(在stepsToDo中定义)。
我尝试过:
stepsToDo.reduce(
(promise, method) => {
return promise.then(method);
},
Promise.resolve()
);
没有任何反应,控制台中没有打印。
为什么?
最佳答案
删除新的 Promise
。您的步骤是返回 promise 的函数,而不是 promise executors - 他们永远不会调用传递给他们的 resolve
回调。
关于javascript - 使用顺序 Promise 在 Javascript 和 jQuery 中运行一些 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48608154/