2016-04-07 1 views
4

Так, глядя на запрос-обещание документы, вот что у меня естьКогда я использую запрос-обещание в функции и возвращает значение, которое он говорит, не определено

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

Я думаю, что это потому, что запрос-обещание вернет обещание.

Так что если вы прямо console.log возвращаете значение, оно будет неопределенным, потому что обещание еще не разрешено.

3

Вы должны вернуть обещание вызывающему:

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) 
}) 
Смежные вопросы