Javascript プロミス

2013 年 4 月 22 日

Javascript では、非同期の操作の保留中の結果を表すオブジェクトがプロミスです。非同期操作が完了した後で、コールバックを供給することで、今後のアクティビティをスケジュールできます。

    aPromise = someAsyncOperation();
    aPromise.done(function() {
      // runs if all went well
    });
    aPromise.fail(function() {
      // runs if something went wrong
    });
    aPromise.always(function() {
      // runs either way
    }); 

非同期タスクでアクティビティをスケジュールする明確なインターフェイスを提供するだけでなく、構成することもできます。

      composedPromise = $.when(anAsyncFunction(), anotherAsyncFunction());
    

この形式(jQuery プロミスを使用)では、構成されたプロミスは、渡されたすべてのプロミスが成功した場合にその完了ハンドラーを実行し、それらのいずれかが失敗した場合は失敗ハンドラーを実行します。

javascript にはさまざまな形式のプロミスがあります。わずかに異なる API と語彙があるのは厄介です。おそらく最もよく使用されているのは jQuery の Deferred Object です。

これらの概念は、非同期だけでなく並行処理を念頭に、javascript だけでなく多くの言語で説明されています。futuresdeferreds

詳細については、Trevor Burnham の Async JavaScript を入手することをお勧めします。ウェブ記事が必要な場合は、バーナムに 短いが便利な記事 があり、それらを要約しています。