如何通过 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
}