Javascript 在node.js中,我正在发出POST请求,在收到POST请求的响应之前,函数正在向端点发送空格
在下面的代码中,响应在请求后执行完成之前发送到端点Javascript 在node.js中,我正在发出POST请求,在收到POST请求的响应之前,函数正在向端点发送空格,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,在下面的代码中,响应在请求后执行完成之前发送到端点 function(req, res) { var details; getPublisherDetails() { getPublisherDetailsFromServer(); } res.send(details); } getPublisherDetailsFromServer() { var det; const JSON = require('circular-json'); var Cl
function(req, res) {
var details;
getPublisherDetails() {
getPublisherDetailsFromServer();
}
res.send(details);
}
getPublisherDetailsFromServer() {
var det;
const JSON = require('circular-json');
var Client = require('node-rest-client').Client;
var client = new Client();
var args = {
data: {
grant_type: "client_credentials",
client_id: "mk",
client_secret: "Mank8"
},
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
};
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
client.post(cache.getURL(), args, function(data, response) {
console.log("Response from server-->" + JSON.stringify(data));
det = data[Object.keys(data)[0]];
});
return det;
}
上面的
det
不包含任何内容,除非post请求完成这就是js async的工作方式。您需要在客户端中发送响应。post
回调
function(req,res) {
const JSON = require('circular-json');
var Client = require('node-rest-client').Client;
var client = new Client();
var args = {
data:
{grant_type:"client_credentials",client_id:"mk"
,client_secret:"Mank8"},
headers: {"Content-Type": "application/x-www-form-urlencoded"}
};
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
client.post(cache.getURL(),args,function (data, response) {
console.log("Response from server-->"+JSON.stringify(data));
var det = data[Object.keys(data)[0]];
res.send(det);
});
}
谢谢,明白了。修改了调用getPublisherDetails的方法,如下所示,并从client.post发送了“det”。函数(req,res){getPublisherDetailsFromServer(req,res);}