节点js返回没有返回任何内容

时间:2017-08-19 18:00:15

标签: javascript node.js asynchronous

我正在尝试恢复函数的值,但它不会返回任何内容

这是函数(Request是一个异步函数,可以获取请求):

var getVolumesOKCoin = function(pair){
  request('https://www.okcoin.com/api/v1/depth.do?symbol=' + pair, function (error, response, body) {
    return body;
  });
}

这就是我恢复价值的方法

var  retObj = getVolumesOKCoin(pair);

retObj的值未定义。

恢复价值的最佳方法是什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

首先要做的事情是:您的功能称为getVolumesOKCoin而不是getVolumes

但是你的函数仍然没有返回任何东西,因为你正在调用一个异步函数,它需要一些时间才能在返回之前接收数据。 See this question here about how asynchronous calls work

一种解决方案是将您的函数体包装在所谓的Promise内,并在收到数据后立即解决。

var getVolumesOKCoin = function(pair) {
  return new Promise( ( resolve, reject ) => {
    request('https://www.okcoin.com/api/v1/depth.do?symbol=' + pair, (error, response, body) => {
      resolve( body );
    } );
  } );
}

getVolumesOKCoin()
  .then( ( body ) => {
    console.log( body );
  } )
  .catch( ( err ) => {
    console.error( 'Error!' );
  } );

另外请确保request已定义。

答案 1 :(得分:0)

简单地添加返回请求。

var getVolumesOKCoin = function(pair){
  return request('https://www.okcoin.com/api/v1/depth.do?symbol=' + pair, function (error, response, body) {
    return body;
  });
}