当我在函数中使用request-promise并返回一个值时,它表示未定义

时间:2016-04-07 19:09:49

标签: node.js request

所以从查看请求承诺文档来看,这就是我所拥有的

function get_data_id(searchValue) {
    rp('http://example.com?data=searchValue')
    .then(function(response) {
        return JSON.parse(response).id;
    });
}

然后我在脚本的其他地方使用此代码

console.log(get_data_id(searchValue));

然而它会返回undefined

如果我将return JSON.parse(response).id更改为console.log(JSON.parse(response).id),我会收到以下内容

undefined
valueofID

因此我尝试返回的价值肯定是有效/正确的,但我无法弄清楚如何将其作为值返回。

2 个答案:

答案 0 :(得分:9)

您需要将承诺退还给来电者:

function get_data_id(searchValue) {
  return rp('http://example.com?data=searchValue')
    .then(function(response) {
      return JSON.parse(response).id;
    });
}

然后使用你的功能:

get_data_id('hello').then(function (id) {
  console.log('Got the following id:', id)
})

答案 1 :(得分:2)

我认为这是因为请求承诺会返回一个承诺。

因此,如果您直接在console.log中返回值,那么它将是未定义的,因为该承诺尚未解决。