调用 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 };
}
我创建了一个 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 };
}