現在、Node/amqp アプリで Q promise ライブラリを使用しています。Q と BlueBird や Vow などのライブラリのパフォーマンスはあまり良くないという記事を読みました。
残念ながら、BlueBird (または Vow) を使用して現在の Q 使用パターンを置き換える方法がわかりません。
次に例を示します。
this.Start = Q(ampq.connect(url, { heartbeat: heartbeat }))
.then((connection) => {
this.Connection = connection;
return Q(connection.createConfirmChannel());
})
.then((channel) => {
this.ConfirmChannel = channel;
channel.on('error', this.handleChannelError);
return true;
});
言及する必要がありました-私はTypeScriptを使用しています...この例では、amqplibの約束を取り、それからQの約束を作成しています(amqplibの約束が好きではないため)。BlueBird または Vow でそれを行うにはどうすればよいですか?
別の例は次のとおりです。
public myMethod(): Q.Promise<boolean> {
var ackDeferred = Q.defer<boolean>();
var handleChannelConfirm = (err, ok): void => {
if (err !== null) {
//message nacked!
ackDeferred.resolve(false);
}
else {
//message acked
ackDeferred.resolve(true);
}
}
...some other code here which invokes callback above...
return ackDeferred.promise;
}
そのパターンはどのように実装されていますか?
したがって、私の一般的な質問は次のとおりです。
- 私が読んだパフォーマンスの違いは本当ですか?
- これら 2 つのパターンに焦点を当てて、Q から BlueBird または Vow に移行するにはどうすればよいですか (ただし、「then」の使用についての説明も素晴らしいでしょう)。