如何通过 Node.js 中的函数得到对 return 函数的响应
How to get response out the function to return through functions in Node.js
function api(method, body){
console.log(body)
unirest.post(BASE_URL + method)
.send(body)
.end(function (response) {
return response.body
});
}
这个 api 函数没有返回我提到的内容
我能做什么
原因:post
是一个异步调用,当它从请求中接收到数据时,该函数已经执行并且没有 return 任何东西。你可以使用 promises 来获取结果,你可以这样实现:
function api(method,body){
return new Promise((resolve, reject) => {
console.log(body)
unirest.post(BASE_URL + method)
.send(body)
.end(function (response) {
resolve(response.body);
});
//if there is any error you can call reject
// reject('You error message');
})
}
//to get the value you can use then/catch or async/await
api().then((data) => {console.log(`Data is ${data}`)})
.catch(console.log);
有关承诺的更多详细信息,请查看 here。
您正在异步回调中使用 return
。
这个可以工作,但你必须使用await
或.then
function api(method,body){
let ret = new Promise((resolve, reject) => {
console.log(body)
unirest.post(BASE_URL + method)
.send(body)
.end(function (response) {
resolve(response.body)
});
return ret
}
function api(method, body){
console.log(body)
unirest.post(BASE_URL + method)
.send(body)
.end(function (response) {
return response.body
});
}
这个 api 函数没有返回我提到的内容
我能做什么
原因:post
是一个异步调用,当它从请求中接收到数据时,该函数已经执行并且没有 return 任何东西。你可以使用 promises 来获取结果,你可以这样实现:
function api(method,body){
return new Promise((resolve, reject) => {
console.log(body)
unirest.post(BASE_URL + method)
.send(body)
.end(function (response) {
resolve(response.body);
});
//if there is any error you can call reject
// reject('You error message');
})
}
//to get the value you can use then/catch or async/await
api().then((data) => {console.log(`Data is ${data}`)})
.catch(console.log);
有关承诺的更多详细信息,请查看 here。
您正在异步回调中使用 return
。
这个可以工作,但你必须使用await
或.then
function api(method,body){
let ret = new Promise((resolve, reject) => {
console.log(body)
unirest.post(BASE_URL + method)
.send(body)
.end(function (response) {
resolve(response.body)
});
return ret
}