Хотя я обычно пользуюсь супом обратного вызова, который является Node.JS, я обнаружил, что определенную часть моего кода нужно запускать блокирующим образом из-за проблемы с SQLite , (Да, я знаю, что могу попытаться обратиться к части SQLite, на самом деле имеет смысл обеспечить блокировку.)Как обеспечить блокировку во время цикла в Node.JS
Мне нравится использовать модуль async, и хотя у меня есть ощущение, что у модуля есть функция, которая может быть использована здесь я не могу найти его. Или, может быть, там есть лучший модуль. Во всяком случае, не мудрствуя лукаво:
func = function(callback) {
let i = 0;
arr.forEach(val => {
if (val.trim().length > 0) {
console.log(`Starting for user ${val}.`);
let mylc = new lcapp(val);
////// TODO this needs to be made sycnronous. /////
async.series({
getMyDetails: callback => getMyDetails(mylc, callback)
}, (err, results) => handleResults(err, results, mylc, callback));
/////////////
}
});
};
фрагмент кода в окружении ////
Я хотел бы, чтобы блокировать до handleResults
функция возвращает. Я понимаю, что это потребует перепрограммирования callback
в handleResults
, или, может быть, мне нужно написать родительскую функцию около func
, но я бы хотел, чтобы у StackOverflow были хорошие идеи.
Помимо SQLite, я забыл упомянуть, что при загрузке файла размером 100 Мб продолжается. Я бы предпочел не скачивать, как это происходит асинхронно через каждый обратный вызов в цикле. –