gpt4 book ai didi

node.js - 回调问题 - 带有 Nodejs 运行时的 OpenWhisk

转载 作者:搜寻专家 更新时间:2023-11-01 00:16:43 26 4
gpt4 key购买 nike

我正在 BlueMix OpenWHisk 中开发一个模块,在 Cloudant 提要更改后,我需要调用一个 url,这将在另一个平台上更新一些细节。我正在使用 nodejs 运行时。

请求是让我的操作等待 POST 请求的结果,到上面提到的 url。如果 POST 成功,那么我应该执行下一个事件序列。

问题:

  1. 如何在执行下一个序列之前等待 POST 请求的结果?

  2. 是否可以等待并返回POST请求的结果。

放置我的代码

   /**
*
* main() will be invoked when you Run This Action
*
* @param OpenWhisk actions accept a single parameter, which must be a JSON object.
*
* @return The output of this action, which must be a JSON object.
*
*/

const util = require('util');
var http = require('http');

function main(params) {

// Updated the status of the User
params.status ="updated1";

var options = {
host: "myhost.mybluemix.net",
path: "/addtoimc",
method: "POST",
headers: {
"Content-Type": "text/plain"
}
};


return {message : addtoIMC(options)};

}

function createRequest(data, options)
{

return http.request(options, function (res) {
var responseString = "";

res.on("data", function (data) {
responseString += data;
// save all the data from response
});
res.on("end", function () {
console.log("AAA" + responseString);
});
});
}



function addtoIMC(options)
{
return new Promise(function(resolve, reject) {
var req = createRequest("Hello",options);
var reqBody = "post_data";
req.write(reqBody);
req.end();

});
}

最佳答案

您的请求逻辑有点问题。例如,您的 promise 从未得到解决,并且您没有听取正确的回调。

我建议你改用request-promise .以下应该有效

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

function main(params) {
return request({
url: "http://myhost.mybluemix.net/addtoimc",
method: "POST",
headers: {
"Content-Type": "text/plain"
}
}).then(response => {
if(response.success) {
return Promise.resolved({message: "nice"});
} else {
return Promise.rejected({error: "it broke"});
}
});
}

关于node.js - 回调问题 - 带有 Nodejs 运行时的 OpenWhisk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45463582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com