私はCloudMix OpenWHiskでモジュールを開発しています。ここでCloudantフィードを変更した後、URLを呼び出す必要があります。私はnodejsランタイムを使用しています。コールバックに関する問題 - NodejsランタイムでのOpenWhisk
私のアクションは、上記のURLにPOSTリクエストの結果を待つことです。 POSTが成功した場合は、次の一連のイベントを実行する必要があります。
質問:
次のシーケンスが実行される前に、POST要求の結果を待つ方法は?
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();
});
}
次のエラーが表示されます。{"error": "このアクションは辞書を返しませんでした。戻り値が{"success":false}の場合、POSTからの戻り値を追跡する必要があります。次のアクションを停止する必要があります。 – bukubapi
プロミスの仕組みについて少しお読みになることをお勧めします。私は元の答えを少し更新します。 – markusthoemmes