gpt4 book ai didi

javascript http 调用不工作

转载 作者:行者123 更新时间:2023-12-03 10:54:26 25 4
gpt4 key购买 nike

我使用 javascript 已经有一段时间了,最​​近开始在我的项目中使用 Nodejs。我需要从我的 Nodejs 应用程序进行一些 http 调用,然后当所有这些调用完成后,需要合并并发送响应。

在这方面,我正在搜索并发现了 Nodejs 的 async 模块。 (https://github.com/caolan/async)

我还发现了一个博客,它很好地解释了如何使用此功能。 (http://justinklemm.com/node-js-async-tutorial/)

下面的代码片段是我计划用于我的任务的代码片段。

// Include the async package
// Make sure you add "async" to your package.json
async = require("async");

// 1st para in async.each() is the array of items
async.each(items,
// 2nd param is the function that each item is passed to
function(item, callback){
// Call an asynchronous function, often a save() to DB
item.someAsyncCall(function (){
// Async call is done, alert via callback
callback();
});
},
// 3rd param is the function to call when everything's done
function(err){
// All tasks are done now
doSomethingOnceAllAreDone();
}
);

在上面我需要进行 http 调用而不是 item.someAsyncCall 部分。具体来说,我的代码是

 var formaatedResponse=[];

request("http://" + API_HOST + "/app/v1/customers/" + element,
function (error, response, body) {
console.log('Ajax call response');
formaatedResponse.push(JSON.parse(response.body));
});

如何适应我的更改,因为当我尝试添加上述代码时,它无法按预期工作。

我的代码:

 function consolidateResponse(){
console.log("Everything is done.");
console.log(formaatedResponse);
}

// 1st para in async.each() is the array of items
async.each(result,
// 2nd param is the function that each item is passed to
function(element, callback){
// Call an asynchronous function, often a save() to DB

request("http://" + API_HOST + "/app/v1/customers/" + element, function (error, response, body) {
console.log('Ajax call response');
formaatedResponse.push(JSON.parse(response.body));
});
callback();

},
// 3rd param is the function to call when everything's done
function(err){
// All tasks are done now
consolidateResponse();
}
);

问候,普拉迪普

最佳答案

您应该在request()的回调内部调用callback():

request("http://" + API_HOST + "/app/v1/customers/" + element,
function (error, response, body) {
console.log('Ajax call response');
formaatedResponse.push(JSON.parse(response.body));
callback();
});

这样,您就可以在 http 请求实际完成时(而不是在请求开始后立即发出信号)表示您已完成特定项目。

关于javascript http 调用不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28317111/

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