【发布时间】:2019-06-25 02:34:37
【问题描述】:
我必须做一个功能来测试 3 个 API 是否正在运行。 因此,用户将单击 Test APIs 按钮,它将返回每个 API 的状态(状态:200、500、404 等)。如果 API 返回错误,我应该显示错误堆栈。 屏幕示例:
API Status Detail
url1.com 200 -
url2.com 200 -
url3.com 500 internal server error
我的问题是,如何并行调用 3 个请求并返回异步结果,我的意思是如何在不等待所有请求结果的情况下更新 API 请求状态屏幕
我是基于那个How do I call three requests in order?,但是它会同步返回结果。
*******编辑*****
这是我当前的代码
app.get('/testDependencies', function (req, res, next) {
let objTestsResul = {}
var urls = ['url1', 'url2', 'url3'];
let index = 0
while(urls.length > 0) {
let url = urls.shift();
objTestsResult[index++] = testURL(url)
}
res.send(objTestsResult)
});
这个函数对于每个 URL 都是一样的:
function testURL(URL){
fetch(URL, {
method: 'GET'
})
.then(res => {
res.json()
})
.then(json => {
console.log(json)
return json
})
.catch(error => {
return error
})
}
【问题讨论】:
-
你检查
Promise.all了吗? -
你将不得不展示我们应该修复的代码。
-
请发布您目前所拥有的 :)
-
好的。到目前为止,我将使用代码更新问题
-
在这种情况下,只需分别发出所有请求,并让每个请求在屏幕上更新自己的元素(或将内容附加到单个现有元素)。从字面上看,只有 3 个独立的独立请求就可以满足您的需求。没有什么聪明的要求。如果这是客户端 Ajax,那就是(默认运行异步)。还是您在谈论服务器端代码?
标签: javascript node.js promise