我想寫一個函數,該函數需要回調並在函數完成後調用它。不阻止的回調函數
這很簡單:
var callback = function (ref) {
var i = 1337;
while (i--) {
console.log(ref, 'callback');
}
};
var someFoo = function (ref, callback) {
console.log(ref, 'self');
callback(ref);
}
someFoo('one', callback); // 1
someFoo('two', callback); // 2
但在這裏,我面臨這個問題:直到allback完成首先someFoo
調用塊。這意味着這個代碼相當於這個(它阻塞,直到每個功能完成):
someFoo('one');
callback('one');
someFoo('two');
callback('two');
現在的問題:如何使回調調用異步?
這看起來像骯髒的黑客。還有一些「官方」方式嗎? –
@WaleryStrauch沒有,唯一的其他方法會更骯髒。 – Paulpro
這不是一個骯髒的黑客。正如Mike Thompson所回答的那樣,JavaScript代碼是同步的。 「異步」執行的唯一來源是外部影響(例如,瀏覽器響應事件或定時器) – Sacho