【发布时间】:2019-01-22 00:13:44
【问题描述】:
在为某些应用程序上下文制作 Promise 时,我遇到的一个问题是希望将 Promise 中的代码的任何执行延迟到以后。当我有 manager 对象维护 Promises 集合以供以后执行时,这种情况经常发生。为了解决这个问题,我最终创建了由 manager 对象在需要执行 Promise 时调用的 builder 函数。这很乏味,并且会导致大量“boilerlate”代码。
例如,这是我的 Promise builder 函数之一:
this._buildPollingPromise = function(ethTransWaiter) {
return new Promise(function(resolve, reject) {
// Execute the function that builds a polling method promise.
ethTransWaiter.confirmTransPromiseBuilder.buildPromise()
.then(function(result) {
...
})
.then(function(ignoreResult) {
resolve(ethTransWaiter.isConfirmed);
})
.catch(function(err)
{
// Reject the promise with the error received.
reject(err);
});
});
}
我必须延迟 ethTransWaiter.confirmTransPromiseBuilder.buildPromise() 方法的执行,因为如果它在创建 Promise 时执行,它将失败,因为条件尚未到位,无法成功执行。
因此,我想知道是否有内置方法或 NPM 包可以创建或帮助创建可以在休眠状态下构建的 Promise,以便函数中的代码位于 Promise 构造函数中不会在稍后的某个时间执行(即 - 在您希望它执行的确切时间)这将为我节省大量样板代码。
【问题讨论】:
-
那么,您怎么知道何时执行
ethTransWaiter.confirmTransPromiseBuilder.buildPromise是安全 ...您如何/何时调用_buildPollingPromise()? -
this pastebin 有帮助吗?或者更好的是this pastebin
标签: javascript promise deferred-execution