hmmm,我在這一段時間內陷入困境,希望我能從你們那裏得到一些提示。角度js代碼in .then函數在承諾完成前執行
我把一些示例代碼在這裏來說明這個問題: http://jsfiddle.net/HB7LU/18216/
所以基本上,我的console.log期待(「出把會員數據」 +號);每當我點擊成員項目時,mySvc.get()休息調用完成後立即執行。
$q.all([
mySvc.get({id: number})
]).then(function() {
console.log('out put data for member ' + number);
});
但事實並非如此,它只能在第一次點擊時按預期工作。第二次點擊它時,會發生相反的情況。
XHR finished loading: GET "http://fiddle.jshell.net/HB7LU/18216/show/test?id=1"
(index):53 loading data - rest call finished
(index):68 out put data for member 1 <- this is correct
(index):68 out put data for member 2 <- this is wrong, should wait till rest call finishes
XHR finished loading: GET "http://fiddle.jshell.net/HB7LU/18216/show/test?id=2
(index):53 loading data - rest call finished
ps:我在鉻中測試它。沒有在其他瀏覽器測試過它
請讓我知道我可以修復它。謝謝!
你可以添加mySvc.get的代碼嗎? mySvc.get()是否返回一個承諾? $ q.all()傳遞一個$ q.promises數組。所以,如果您沒有從.get()返回承諾,那麼它將無法工作。請展示。 – frosty