所以从查看请求承诺文档来看,这就是我所拥有的
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
因此我尝试返回的价值肯定是有效/正确的,但我无法弄清楚如何将其作为值返回。
答案 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中返回值,那么它将是未定义的,因为该承诺尚未解决。