API(第三者)を呼び出してすぐに戻りますが、APIの応答を待っている関数を作りたいと思います。ここで非同期要求が終了するまでラムダ関数が返されない
は、コードサンプルです:私はcontext.succeed()
代わりのcb()
を呼び出そうと
var request = require('request');
// When I call functionOne it should trigger functionTwo and should end immediately,
// but unfortunately, it is waiting for functionTwo to end
module.exports.functionOne = (event, context, cb) => {
const uri = 'https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/functionTwo';
request.post({ uri: uri });
cb(null, "done functionOne");
};
module.exports.functionTwo = (event, context, cb) => {
console.log("i'm functionTwo");
setTimeout(function() {
console.log("I'm functionTwo about to end");
context.succeed("done functionTwo");
}, 5000);
};
また、それもAPIを呼び出すことなく、すぐにAPIの呼び出しや機能の戻りを防ぎます。
また、GitHubに関する問題を作成しました。
追加情報:
- サーバレスフレームワーク:v1.0.0デベロッパー - rc.2
- ノード:v6.9.1
- OS:勝利10
ファンクション2は実際には第三者のAPIがあり、そのAPIにポストリクエストを送信していますが、実際にはそれはスラックAPIです –
スラックAPIに固有の別の質問を作成します。別のラムダ関数であれば、数ミリ秒で返るのでSNSを使うことができます。スラックが完了するまでに数秒かかる場合は、待たずにリクエストを待ち行列に入れる別の方法を提供しているかどうかわかりません。 – Zanon
そうでなければ、ラムダを早期に強制的に停止させる要求を中止することができますが、私が言ったように、スラックが要求を受け取るまで数分待つ必要があります。 – Zanon