gpt4 book ai didi

javascript - 如果代码需要很长时间才能完成,如何在 node.js 中引发超时错误?

转载 作者:行者123 更新时间:2023-12-05 08:08:10 30 4
gpt4 key购买 nike

在 ruby 中我可以:

require 'timeout'

Timeout.timeout 10 do
# do smth > 10 seconds
end

它会引发超时错误以避免代码锁定,如何在 nodejs 中做同样的事情,nodejs #setTimeout 不符合我的需要

一种情况是,当我 http.get 超时(例如,netowrk 不稳定)时,我应该设置超时并处理失败的 get 请求,我希望 impl #timeout,我该怎么办?

try {
timeout(10, function () {
http.get("example.com/prpr")
})
} catch (e) {
if (e.message == "timeout") {
// do smth
} else {
throw e
}
}

最佳答案

您可以在此处查看基于 Promise 的方法。

使用 promise ,您可以传递一个要执行的函数,然后如果该函数引发异常,则调用标准的 catch

NPM 上有一个有用的基于 promise 的超时库(npm install promise-timeout request-promise),您可以在 Node 中使用它,类似于...

'use strict';

var promiseTimeout = require('promise-timeout');
var requestPromise = require('request-promise');

promiseTimeout.timeout(requestPromise("http://example.com/prpr"), 10000)
.then(function (result) {
console.log({result});
}).catch(function (err) {
if (err instanceof pt.TimeoutError) {
console.error('HTTP get timed out');
}
});

关于javascript - 如果代码需要很长时间才能完成,如何在 node.js 中引发超时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51856324/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com