gpt4 book ai didi

javascript - 如何使用回调函数在 Node js 中返回 api 响应

转载 作者:行者123 更新时间:2023-11-30 07:20:12 25 4
gpt4 key购买 nike

我是回调函数的新手。实际上我在 Node js 中使用请求模块来获取一些信息。我很困惑如何返回我的响应,因为 Javascript 本质上是异步的。我有以下代码。我的app.js代码如下:

var express = require('express');

var app = express();

const request = require('request');

var call = require('./method');
app.use(express.json());

app.post('/call', function(request, response){
var json = request.body;
var p1 = json.p1;
var p2 = json.p2;
var p3 = json.p3;
var p4 = json.p4;
call.callApi(p1, p2, p3, p4);

//response.send(request.body);
});
app.listen(3000);

我的名为method.js的函数文件如下:

const request = require('request');

function callApi(p1, p2, p3, p4, callback) {

var api = "http://test.roadcast.co.in:8088/api/route/" + p1 + "/" + p2 + "/" + p3 + "/" + p4;
console.log(api);
request(api, function(err, res, body) {
var result = body;
return callback(result, false);
//console.log(body);
//return result;
});
}

module.exports = {
callApi: callApi,
};

我通过在正文中发送 json 数据来请求 POST 请求,如下所示:

{ "p1":"28.7033129", "p2":"77.1542682", "p3":"28.709637", "p4":"77.291254" }

我得到的结果是正确的,但我只是想返回响应,请纠正我哪里出错了。

最佳答案

就像任何其他回调一样。在您的代码中,您没有为 callback 参数传递任何内容。如果你这样做,并使用它的参数,你就可以编写响应。在 post 回调期间不同步写入响应是可以的(很好并且完全正常)。

例如:

app.post('/call', function(request, response){
var json = request.body;
var p1 = json.p1;
var p2 = json.p2;
var p3 = json.p3;
var p4 = json.p4;
call.callApi(p1, p2, p3, p4, function(result) { // ***
response.send(result); // ***
}); // ***
});

也就是说,您应该更改回调以匹配标准的 Node 回调样式(或采用 promises,这会更好):让它传递一个错误或 null 作为第一个参数,并且结果(如果有的话)作为第二个。例如:

function callApi(p1, p2, p3, p4, callback) {

var api = "http://test.roadcast.co.in:8088/api/route/" + p1 + "/" + p2 + "/" + p3 + "/" + p4;
console.log(api);
request(api, function(err, res, body) {
return callback(err, body); // ***
});
}

然后

app.post('/call', function(request, response){
var json = request.body;
var p1 = json.p1;
var p2 = json.p2;
var p3 = json.p3;
var p4 = json.p4;
call.callApi(p1, p2, p3, p4, function(err, result) { // ***
if (err) { // ***
// Send error response // ***
// ... // ***
} else { // ***
// Send successful response // ***
response.send(result); // ***
} // ***
});
});

关于javascript - 如何使用回调函数在 Node js 中返回 api 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50698680/

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