承诺并确保准备就绪 节点 JS



我只是想知道是否有人在使用 promise 时对 Node JS 中的"确保就绪"模式有任何好的想法。 我有这样的东西,但我认为它的主要问题是我认为承诺的 .then(cb) 实际上覆盖了前一个,而不是链接另一个处理程序......

  function awaitQueueCreation() {
     if (!q._queueURL) return whenQueueCreated;
     else return p.resolve(q._queueURL);
  }
  q.someQueueMethod = function(param) {
       awaitQueueCreation().then(function() {
           // do what this method is supposed to do...
       });
  };

你会如何处理这类事情?

将额外的.then()处理程序添加到同一承诺只会为同一承诺创建第二个通知。 它不会链接到上一个.then()处理程序。 它不会覆盖任何先前的.then()处理程序。

因此,添加两个.then()处理程序只是在承诺实现时一个接一个地对两个回调进行排序。

如果第一个.then()处理程序本身返回未填充的承诺,则仍会立即调用第二个.then()处理程序(它不会"链接"到新的未填充承诺)。

要链接两个承诺,您必须执行以下操作:

p.then(...).then(...)

不:

p.then(...)
p.then(...)

最新更新