2016-11-09 10 views
0

私は約束をしています。それはサーバーを呼び出すaPromiseと、約束していないものです。これは非同期的に呼び出され、呼び出されて何かをする必要があります結果。私はこれを持っているが、それがあるかどうかわからないPromise.allで約束と非約束を呼ぶ

Promise.all([aPromise(), Promise.method(notAPromise)()]) 
.spread(function(result1, result2) { 
    //do something with results 
}) 
.catch(function(error) { 
    //do something with error 
}); 

を行うための最善のことは、それが正しいPromise.allに同期notAPromiseを置くためにか、それは外であるべきですか?

この方法の利点は、aPromiseがサーバーから戻ってくる時間がかかっても、それが戻ってくるまでに完了していないことです。あるいは、サーバーを呼び出す前に同期notAPromiseが終了するまで待つ必要はありません。

私はこのコードを書くべきではないですか?

EDIT: また、結果が返されるのではなく、一部の状態が変更されていない場合でも、aPromiseが正常に返された場合にのみ新しい状態が必要でした。 aPromiseがスローしても、それが完了していない場合、我々は新しい状態になるだろうか?

+0

Promiseは非同期に実行できるので、promise.all内に非約束関数を挿入する必要はありません –

答えて

3

あなたのコードは全く綺麗です(さらに、notAPromiseが投げるケースを処理します)。しかし、通常はどちらかというと、2つの関数が呼び出されたときの順番や時間を気にしないときには、単純に1つ書けばよいでしょう。同期notAPromiseは、問題があれば(また他のものと並行して実行できるはずです)、実行時間が顕著になり、非同期であったはずです。