我有两个想要连续执行的匿名函数。我怎样才能做到 promise 呢?
在这个简化的示例中,需要连续执行的两个函数是“saveAs”匿名函数内的“renameReport”和“saveReport”。
“renameReport”和“saveReport”都使用 jQuery 进行 AJAX 调用。仅仅在下一行执行 renameReport 和 saveReport 是不行的。
var renameReport = function () {
...
}
var saveReport= function () {
...
}
var saveAs = function () {
renameReport().then(saveReport()); //not working
};
这会导致错误:“TypeError:renameReport(...) 未定义”
最佳答案
要使用 promise ,您必须有 promise 并返回它们,以便可以将其链接起来。因此,如果您确实有一个带有 promise 的函数,那么您可能不会返回该 promise 。
您还调用了该函数,但没有在 then 中引用它。当您添加 ()
时,它会执行该函数并将其返回的内容分配给 then
。因此删除 ()
这样它就不会被执行。
您需要的基本程序流程如下所示。
var renameReport = function () {
console.log('renameReport')
return new Promise( function (resolve, reject) {
window.setTimeout(function () {
console.log('renameReport timeout')
resolve('hello')
}, 2000)
})
}
var saveReport = function (data) {
console.log('saveReport', data)
}
var saveAs = function () {
renameReport().then(saveReport);
}
saveAs()
关于javascript - 两个匿名函数之间的简单 "then" promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59197417/