Вызов веб-сервиса и получение ответа на переменную (String) с помощью nodejs.и вернуть эту строку в облачных функциях IBM - PullRequest
0 голосов
/ 27 августа 2018

Я создаю облачную функцию IBM.Я использую nodejs в качестве языка кодирования.как только я ввел следующие несколько строк в редакторе и вызвал его.

function main() {
   return { message:'response from server' };
}

Затем я получил «ответ от сервера» в результате. (успешно)

Как будто я хочувызвать внешний веб-сервис и получить этот ответ (String) вместо этого жестко закодированного ответа.Таким образом, я использовал следующие строки для этого

 const request = require('request-promise');

 function web(){
     return request("https://58a78829.ngrok.io/webhook/testRequest")
     .then(function(response){
     return Promise.resolve(JSON.parse(response)); 
     });
 }

 function main(){
    var y;
    web().then(function(result){
    y=result;
    console.log(y);
    });    

    return { message: y };
 }

, как только я вызову приведенный выше код, я ничего не получаю в качестве результата или журнала.переменной y не присваивается значение.

Я не уверен, можем ли мы присвоить значение, возвращаемое методом, переменной в nodejs8.

Может кто-нибудь помочь мне решить эту проблему.

1 Ответ

0 голосов
/ 27 августа 2018

Вы можете просто использовать для этого функцию async await в javascript.После написания того же кода с помощью асинхронного ожидания ваш код будет выглядеть примерно так:

const request = require('request-promise');

async function web(){
    const res = await request("https://58a78829.ngrok.io/webhook/testRequest");
    return res;
}

async function main(){    
   const x = await web();
   console.log('x: ', x);
   return { message: x };
}
...