Неуклюжее решение (которое не требует тщательного прочтения вашего кода):
var readyForCallback = false;
function doMainProcess() {
// your code here
readyForCallback = true;
}
function doCallback(arg1,arg2,arg3,etc) {
if (!readyForCallback) {
// anonymous function as way to keep the original callback
// argument(s) with a timeout
setTimeout(function(){doCallback(arg1,arg2,arg3,etc);},20);
return;
}
// your code here
}
Примечание: в вашей функции тайм-аута вы также можете использовать doCallback.apply()
с объектом arguments
для автоматической обработки любого количества аргументов, но я не включил это в свой код, потому что я забыл, можете ли вы просто используйте объект arguments
напрямую или, если вам необходимо сначала создать правильный массив, заполненный из arguments
.