我有在本地运行良好的Node.js函数,但是在Azure无服务器功能(HTTP触发器)中,如果其中一个请求以空request.body响应,它会意外地在请求循环上停止,而不是继续执行循环的其余部分。
下面是代码示例,然后是console.log,以显示功能在哪里停止。
const ids = [1, 2]
const responses = ids.map(async ids => {
const response = await axios.get(
`${URL}/api/purchase/${ids}/details`,
headers
);
console.log("Status: ", response.status);
console.log("Response: ", response.data);
return response.data;
});
const responseCollection = await Promise.all(responses);
下面是日志:
[Information] Status 200
[Information] Response []
[Information] Executed 'Functions.my-func' (Succeeded, Id=21988***)
[Information] Status 200
[Information] Response [data:{number:2}]
正如您在日志中看到的那样,一旦它得到一个空的响应主体,它就会中断而不会继续。带有“已执行”标志。
在具有相同代码的本地Node.js应用程序上,它将继续循环,并且Promise.all在将两个空响应与另一个非空响应合并后触发。 无论如何,要避免它停止在Azure无服务器功能上?