调用 Web 服务并使用 nodejs 获取对变量(字符串)的响应。 return ibm 云函数中的那个字符串

calling a web service and get the response to a variable(String) using nodejs. and return that string in ibm cloud functions

我创建了一个 ibm 云函数。我使用 nodejs 作为我的编码语言。一旦我在编辑器中输入以下几行并调用它。

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

然后我得到了'response from server'作为结果。(成功)

像这样,我想调用外部 Web 服务并获取该响应(字符串)而不是这个硬编码的响应。所以我为此使用了以下几行

 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。

我不确定是否可以将 return 从方法中赋值给 nodejs8 中的变量。

谁能帮我解决这个问题。

您可以简单地使用 javascript 的 async await 功能。使用 async await 编写相同的代码后,您的代码将如下所示。

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 };
}