:q.js: Bir işlev yerine getirilinceye kadar bir işlevi yürütmeyi durdurabilir miyim? Örnek olarak
if(foo) {
async_call(); // returns a Q promise object
}
// do this immediately if foo was false
// or after the promise is resolved if foo was true
bu mümkün olabilir mi?
Gördüğüm alternatifler ya her zaman async işlevini çağırıyor, daha az uygun olan ancak kod içinde çalışacak 'foo' kontrolünü atıyor; ya da sadece 'foo' nun doğru olduğunu varsayarak ve yanlışsa bir hata atıyor (arayanın async işlevini çağırdıktan sonra tekrar denemesini gerektiriyor) ki bu da belli sebeplerden daha az ideal.
DÜZENLEME:
var promise = foo ? Q.defer().resolve(foo).promise : async_call();
promise.then(function(foo) {
// this is done after the async call if it was necessary or immediately if not
});
Mükemmel, istediğim buydu! Teşekkürler! –
Kanonik formların 'Q (valueOrPromise) .then (onFulfilled)' veya 'Q.when (valueOrPromise, onFulfilled)' olduğunu unutmayın. Seninki de çalışıyor, ama daha az deyimsiz :) – Domenic