0

より速いもの:

Event.once('some_event', function() { // wait until an event fired from somewhere
  defer.resolve('resolved')
})
...
// somewhere else
Event.emit('some_event')

またはsmth.like:

defer = doSmthDeferred(); // to get the deferred resolved/rejected from somewhere else
...
// somewhere else
doSmthDeferred = function() {
  defer
  if ...
    defer.resolve();
  else
    defer.reject();
}

つまり: どちらが優れていますか? ネストされた promise/deferred を使用したイベント処理または処理? promise/deferred はイベント処理に基づいていますか?

4

1 に答える 1

1

これはかなり赤いニシンです。イベントと Promise の解決の間の速度の違いは、ほとんどの場合、ごくわずかです。

イベントは、何度も起こることのために設計されています。例: Web サーバーに到着するリクエスト、またはボタンをクリックするユーザー。それらは合成を適切にサポートしていないため、非同期操作に使用すると厄介になります。つまり、2 つのイベントの両方が発生するのを待つのは困難です Promise は非同期操作 (サーバーから Web ページを要求するなど) 用に設計されています。それらは一度しか解決できないため、イベントのようなものには適していません。複数の非同期操作が並列または連続して発生している場合、promise を使用するとそれらの操作が非常に簡単になります。良い約束のライブラリを探しているなら、Qをチェックすることをお勧めします

于 2013-03-09T13:29:15.997 に答える