gpt4 book ai didi

node.js - NodeJS - 发送多个请求并在一个回调中处理所有响应

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:30 24 4
gpt4 key购买 nike

我正在尝试找到一种方法来发送多个请求(使用 Express)并在一个函数中处理所有响应。

这是我的代码:

  // In router.js
app.get('/api/FIRST_PATH', CALLBACK_FUNCTION_A );

// In CALLBACK_FUNCTION_A file :
module.exports = function (req, response) {
CALLBACK_FUNCTION_TO_SERVICE_A();
CALLBACK_FUNCTION_TO_SERVICE_B();
CALLBACK_FUNCTION_TO_SERVICE_C();
}

我的问题是发送请求CALLBACK_FUNCTION_TO_SERVICE_A、CALLBACK_FUNCTION_TO_SERVICE_B和CALLBACK_FUNCTION_TO_SERVICE_C,然后在另一个函数中检索所有结果来处理它们。

任何帮助将不胜感激。

最佳答案

您可以了解有关新 js 标准的更多信息并使用 Promise

// In CALLBACK_FUNCTION_A file :
module.exports = function (req, response) {
var promises = [CALLBACK_FUNCTION_TO_SERVICE_A(),
CALLBACK_FUNCTION_TO_SERVICE_B(),
CALLBACK_FUNCTION_TO_SERVICE_C()];

Promise.all(promises).then( function(results) {
//results is an array
//results[0] contains the result of A, and so on
});
}

当然CALLBACK_FUNCTION_TO_SERVICE_A() 等需要返回Promise 对象。您可以构建一个如下所示的函数:

function asyncFunction(callback) {
//...
callback(result);
}

你可以像这样创建一个 Promise:

var p = new Promise(asyncFunction);

它将开始运行该函数,并支持 Promise 接口(interface)。

例如,可以使用 request-promise 或者您可以执行以下操作:

function CALLBACK_FUNCTION_TO_SERVICE_A() {
var worker = function(callback) {
app.get('/api/FIRST_PATH', callback);
};

return new Promise(worker);
}

您可以阅读有关 Promise 以及如何轻松处理错误的更多信息。

关于node.js - NodeJS - 发送多个请求并在一个回调中处理所有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37588666/

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