在休眠状态下创建Javascript承诺?

在休眠状态下创建Javascript承诺?,javascript,promise,deferred-execution,Javascript,Promise,Deferred Execution,我在为特定应用程序上下文制定承诺时遇到的一个问题是希望将承诺中的任何代码延迟到以后执行。当我有管理器对象维护一组承诺供以后执行时,这种情况经常发生。为了解决这个问题,我最终创建了生成器函数,这些函数在需要执行承诺时由manager对象调用。这是乏味的,并导致相当数量的“样板”代码 例如,下面是我的Promise builder函数之一: this._buildPollingPromise = function(ethTransWaiter) { return new Promise(fu

我在为特定应用程序上下文制定承诺时遇到的一个问题是希望将承诺中的任何代码延迟到以后执行。当我有管理器对象维护一组承诺供以后执行时,这种情况经常发生。为了解决这个问题,我最终创建了生成器函数,这些函数在需要执行承诺时由manager对象调用。这是乏味的,并导致相当数量的“样板”代码

例如,下面是我的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);
        });
    });
}
我必须延迟执行ethrTranswater.confirmTransPromiseBuilder.buildPromise()方法,因为如果它在创建承诺时执行,它将失败,因为它成功执行的条件还不具备


因此,我想知道是否有一个内置的方法或NPM包,可以创建或帮助创建可以在休眠状态下构建的承诺,以便生活在承诺构造函数中的函数中的代码在以后某个时间(即,在您希望它执行的确切时间)才执行这将为我节省大量样板代码。

可能是这样的吗

function wait(ms) {
  return new Promise(function (resolve) {
    setTimeout(resolve, ms);
  });
}

this._buildPollingPromise = function (ethTransWaiter) {

  var waitUntilLater = wait(3000);

  var buildPromise = 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);
      });
  });

  return Promise.all([waitUntilLater, buildPromise]).then(function (results) {
    return results;
  });

}

那么,您如何知道何时可以安全地执行
ethrTranswater.confirmTransPromiseBuilder.buildPromise
。。。您如何/何时调用
\u buildPollingPromise()
?有帮助吗?或者更好,或者您可以移动等待时间来确认TransproMiseBuilder函数。