Я нашел этот код ниже на GitHub , чтобы гарантировать, что n + 1-й элемент не будет обработан, пока не будет вызван обратный вызов процессора n-го элемента.
/**
* Process an array of data synchronously.
*
* @param data An array of data.
* @param processData A function that processes an item of data.
* Signature: function(item, i, callback), where {@code
item} is the i'th item,
* {@code i} is the loop index value and
{@code calback} is the
* parameterless function to call on
completion of processing an item.
*/
function doSynchronousLoop(data, processData, done) {
if (data.length > 0) {
var loop = function(data, i, processData, done) {
processData(data[i], i, function() {
if (++i < data.length) {
loop(data, i, processData, done);
} else {
done();
}
});
};
loop(data, 0, processData, done);
} else {
done();
}
}
Я сталкиваюсь с трудностями при вызове метода doSynchronousLoop () и написании методов: processData () и done ().
Пожалуйста, помогите мне понять фрагмент кода и как я могу написать свой код, который я хочу повторить?