Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在几个承诺的中间设定超时时间?_Javascript_Node.js_Express_Timeout_Promise - Fatal编程技术网

Javascript 如何在几个承诺的中间设定超时时间?

Javascript 如何在几个承诺的中间设定超时时间?,javascript,node.js,express,timeout,promise,Javascript,Node.js,Express,Timeout,Promise,我使用的是node/express,我需要设置一个很长的超时时间,以天为单位,在许多承诺中测量 我的代码如下: .then(function(thing){ setTimeout(function(thing), 5000) .then(function() { //do something else 在StimeTimeUT的中间,所有功能都运行得很好,包括超时功能,但超时被完全忽略。为了迭代的目的,我将超时时间改为5秒,而不是几天。如果您使用的是Parse,我想您可以做出如下自定义承诺 f

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

我的代码如下:

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

在StimeTimeUT的中间,所有功能都运行得很好,包括超时功能,但超时被完全忽略。为了迭代的目的,我将超时时间改为5秒,而不是几天。

如果您使用的是Parse,我想您可以做出如下自定义承诺

function pWaiter(time){
    var promise = new Parse.Promise();
    setTimeout(function(){
        promise.resolve();
    }, time);
    return promise;
}
然后像这样使用它:

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

你在使用Promise图书馆吗?它可能有一个助手功能我没有,但我确实安装了Q/Q。这是我唯一需要它的地方,我真的不知道如何使用Q,也不知道它是否有帮助函数;有没有更简单的方法?如果你不使用Q,那么你是如何创造承诺的?谢谢。很久以前我就对Parse失去了信心,但我只是尝试了一下,它确实奏效了!一开始,我担心我所做的可能是反模式的,但据我所知,上面的代码是可以接受的。是的,当用于“承诺”某事时,创建承诺不是反模式的。在这里,你是在承诺一个超时,所以没关系。