コールバックの代わりにPromiseを返すように、以下のcallEndPointWrapperを変換します。 私は以下のコードでテストしましたが、callEndpointWrapper()のPromiseを待っている間に要求がタイムアウトしています。 私は以下を欠いていますか? プロミスため待つ間(デバッグ中私は上のコードの行の下に要求時間を参照してください return (function callEndpoint(callback): any {
コールバックをPromiseに変換する
コールバック:
function callEndPointWrapper(): any {
return function callEndpoint(callback) {
try {
// gRPC call
client[methodName](req, options, callback);
}
catch (err) {
callback(err);
}
};
}
const result = yield callEndpointWrapper();
// I get the correct result from callback above (both on success or error)
プロミス:
function callEndPointWrapper(): Promise<any> {
return new Promise((resolve, reject) => {
return (function callEndpoint(callback): any {
try {
// gRPC call
resolve(client[methodName](req, options, callback));
} catch (err) {
reject(callback(err));
}
});
});
const result = await callEndpointWrapper();
// Above request times out.
このコードの動作はちょっと混乱します。コールバックベースのコードは、コールバックを受け付ける関数を返しますが、実際には非同期の仕事をしている関数です... 'await callEndpointWrapper()()' ...(2回の呼び出しに注意してください) ? 'callEndpoint'関数の終了時に利用可能な設定オプションを渡していなければ、ラッパー関数を持つことは何のポイントですか? – nem035
@ nem035返信いただきありがとうございます。返信いただきありがとうございます.1回限りの呼び出し、すなわち 'await callEndPointWrapper()'であり、 'callEndpointWrapper'を呼び出す前に要求(req)とオプションがグローバル変数として設定されています。 – user2608576
['co'](https://github.com/tj/co)を使用していますか? – nem035