【发布时间】:2018-06-05 11:12:55
【问题描述】:
我是回调函数的新手。实际上我在节点 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" }
我得到了正确的结果,但我只想返回响应,请纠正我的错误。
【问题讨论】:
-
先生,您想回复谁?任何功能或用户浏览器/客户端或什么?
-
在 app.js 文件中。
-
你使用
call.callApi(p1, p2, p3, p4);调用,你的 callApi被声明为function callApi (p1, p2, p3, p4, callback) {...所以,当你调用函数时只需传递一个回调函数 -
提示:您在 method.js 中编写的内容没有任何问题...但是回调的“节点约定”是相反的...您这样做
callback(result, false);- “公约”将是callback(false, result);- 即fn(error, result)- 这并不重要,但我想我会提到它
标签: javascript node.js rest