Angulars $q
是克里斯·科瓦爾的Q.啓發承諾/延期執行AngularJS和Q.fcall
在Q,你創建
var myPromise = Q.fcall(myFunction);
這裏myFunction
承諾將異步調用,一個承諾放置在myPromise
變量中,並繼續執行代碼。
only example角度給出了創造一個承諾是使用javascript timeout
函數,這對我來說似乎是一個冗長的破解與上面的Q例子相比。所以在Angular中,我會寫
function asyncWorker(name) {
var deferred = $q.defer();
setTimeout(function() {
scope.$apply(function() {
deferred.resolve(myFunction);
});
}, 1000);
return deferred.promise;
}
上面的內容與頂部的單行相同。
我希望$q.fcall
會的工作,但我得到:
TypeError: 'undefined' is not a function (evaluating '$q.fcall(function() { return 'a'; })')
那麼什麼是異步調用的函數,並返回在AngularJS承諾的最簡單的方法是什麼?
這是一個很好的答案,但值得說明的是,它並不像使用defer()那樣完全模擬'fcall',因爲'defer'可以像'fcall'一樣同步運行,但'$ timeout'是異步的。 – marksyzm