есть 2 скрипта асинхронных, запускается первый и дальше ничего не происходит, второй не запускается, просто висит.В чем проблема?
const { promisify } = require('util');
const addOrdersToGoogleSheets = async statuses => {
console.log("addOrdersToGoogleSheets", statuses)
};
await promisify(addOrdersToGoogleSheets)([4, 5, 6, 7, 8, 9]);
await promisify(addOrdersToGoogleSheets)(12);
Вам не нужно использовать promisify
, т.к. у вас функция и так асинхронная. promisity
создает обертку для методов, которые не работает с промисами, а со старым подходом основанным на callback
и требует, чтобы ему передавали метод со следующей сигнатурой: (param, callback) => {}
. Исправить это можно разными способами:
Используя сразу промисы:
const addOrdersToGoogleSheets = async statuses => {
console.log("addOrdersToGoogleSheets", statuses)
};
await addOrdersToGoogleSheets([4, 5, 6, 7, 8, 9]);
await addOrdersToGoogleSheets(12);
Использую promisify
:
const addOrdersToGoogleSheets = (statuses, callback) => {
console.log("addOrdersToGoogleSheets", statuses);
if (callback)
callback();
};
await promisify(addOrdersToGoogleSheets)([4, 5, 6, 7, 8, 9]);
await promisify(addOrdersToGoogleSheets)(12);
В данном случае callback
нужен для того, чтобы понять когда оригинальный метод завершился и можно сделать Promise.resolve()
, чтобы вызывающий код мог понять, что промис завершился, поэтому у вас и не вызывается второй часть кода, т.к. по факту первый промис никогда не завершается.
promisity
внутри работает примерно так (это не настоящий исходный код):
function primisity(fn) {
return function (...args) {
return new Promise(resolve => {
fn(...args, resolve); // тут и передается функция resolve в качестве callback
});
};
};
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Можно ли с помощью JS или же другого языка запустить определенный ярлык с рабочего стола Windows 10?
Перепробовала вообще все, что гугл выдавал - не работает: приведение к числу (parseInt(), Number()) или строке, через setDate()Сталкивались ли вы с таким...
Хочу переписать SSR на сервере, что бы сам рендеринг проходил в отдельном потоке и не блокировал остальные запросы на сервер
Я знаю, как получить данные из input конкретно через React(setState и тд), но через React-Redux (reducer) не имею представленияБудет ли правильно, имея систему...