【问题标题】:How do you set timeout in the middle of several promises?你如何在几个承诺中间设置超时?
【发布时间】:2015-07-09 16:59:53
【问题描述】:

我正在使用 node/express,我需要设置一个非常长的超时时间,以天为单位在许多承诺中测量。

我的代码是这样的:

.then(function(thing){
setTimeout(function(thing), 5000)
.then(function() {
//do something else

在 setTimeout 中间包含该函数之前和之后,一切都运行得非常好,但超时被完全忽略。为了迭代,我将超时设置为 5 秒,而不是任何聪明人的天。

【问题讨论】:

  • 你在使用任何 Promise 库吗?它可能有一个辅助函数
  • 我不是,但我确实安装了 Q/q。 . .这是我唯一需要它的地方,我真的不知道如何使用 Q,也不知道它是否有辅助功能;有没有更简单的方法?
  • 如果你不使用 Q,那么你是如何创建 Promise 的呢?

标签: javascript node.js express timeout promise


【解决方案1】:

如果您使用 Parse,我想您可以做出自定义承诺,例如...

function pWaiter(time){
    var promise = new Parse.Promise();
    setTimeout(function(){
        promise.resolve();
    }, time);
    return promise;
}

并像这样使用它:

...
.then(function(thing){
    return pWaiter(5000);
}).then(function() {
...

【讨论】:

  • 谢谢。很久以前我对 Parse 失去了信心,但我只是尝试了一下,它确实奏效了!
  • 一开始我还担心自己做的事情可能是反模式,但是根据Promise-anti-patterns,上面的代码是可以接受的。
  • 是的,当用于“承诺”某些东西时,创建 Promise 并不是一种反模式。在这里,您承诺超时,所以没关系。
猜你喜欢
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 2018-04-10
  • 1970-01-01
  • 2021-06-29
  • 2012-01-16
  • 1970-01-01
相关资源
最近更新 更多