Size: a a a

2020 July 09

CM

Chingiz Mamiyev in pro.js
Peter V
А вы не отправляете людей в @js_noobs_ru ?
-
источник

PV

Peter V in pro.js
🙁
источник

PV

Peter V in pro.js
просто у меня какой то диссонанс между названием чата и вопросам типо: как в JS объявлять функцию
источник

АО

Анатолий Облаухов... in pro.js
Всем привет.
Есть такой код.
new Promise((res, rej) => { console.log('123'); res() })
Выводит в консоль 123
Нужно изменить код так, чтобы избавиться от ключевого слова new.
Есть идеи?
источник

АО

Анатолий Облаухов... in pro.js
(Promise)((res, rej) => { console.log('123'); res() })
естественно не работает, ведь Promise надо инстанцировать
источник

CM

Chingiz Mamiyev in pro.js
Анатолий Облаухов
Всем привет.
Есть такой код.
new Promise((res, rej) => { console.log('123'); res() })
Выводит в консоль 123
Нужно изменить код так, чтобы избавиться от ключевого слова new.
Есть идеи?
Вроде никак, не совсем понятно причина, почему нужно избавиться от new ?
источник

CM

Chingiz Mamiyev in pro.js
Ramazan
сделал, но все равно не хочет
Что там?
источник

АО

Анатолий Облаухов... in pro.js
Chingiz Mamiyev
Вроде никак, не совсем понятно причина, почему нужно избавиться от new ?
Есть вот такой код.
const customScripts = [];
const addCustomScript = wrapper => {
   customScripts.push(new Promise((res, rej) => {
       wrapper(res, rej);
   }));
};

Функция addCustomScript может использоваться для добавления асинхронных скриптов на страницу, например так:
addCustomScript((res, rej) => {
   //something
   resolve();
});

В конце вызывается вот такой код:
Promise.allSettled(customScripts).then(setCustomScriptsFinished);
Функция  setCustomScriptsFinished вызывает свой код, который собирает артифакты, шлёт уведомления и прочее.

Дело в том, что подключаемые скрипты не могут знать, существует ли эта функция или нет. Если нет - то они должны просто выполниться.
Для этого я изменил схему подключения:
(addCustomScript || Promise)((res, rej) => {
   //something
   resolve();
});
Понятное дело, что такой код не работает. Как написать правильно?
источник

АО

Анатолий Облаухов... in pro.js
Не хочется использовать иф, и соответственно копировать тело функции дважды
источник

PV

Peter V in pro.js
Анатолий Облаухов
Есть вот такой код.
const customScripts = [];
const addCustomScript = wrapper => {
   customScripts.push(new Promise((res, rej) => {
       wrapper(res, rej);
   }));
};

Функция addCustomScript может использоваться для добавления асинхронных скриптов на страницу, например так:
addCustomScript((res, rej) => {
   //something
   resolve();
});

В конце вызывается вот такой код:
Promise.allSettled(customScripts).then(setCustomScriptsFinished);
Функция  setCustomScriptsFinished вызывает свой код, который собирает артифакты, шлёт уведомления и прочее.

Дело в том, что подключаемые скрипты не могут знать, существует ли эта функция или нет. Если нет - то они должны просто выполниться.
Для этого я изменил схему подключения:
(addCustomScript || Promise)((res, rej) => {
   //something
   resolve();
});
Понятное дело, что такой код не работает. Как написать правильно?
addCustomScripts это твоя функция или внешняя?
источник

АО

Анатолий Облаухов... in pro.js
Peter V
addCustomScripts это твоя функция или внешняя?
моя, а подключаемые скрипты её используют для правильного подключения
источник

С

Славик in pro.js
воспользоваться оператором if =)
источник

АО

Анатолий Облаухов... in pro.js
Но её может не быть на странице в момент их вызова, например, если этот механизм обёртки просто отключён и не нужен. А переписывать кастомные скрипты в таком случае - не вариант. Они ничего не знают о схеме подключения, они просто её используют
источник

АО

Анатолий Облаухов... in pro.js
Собственно, всё сводится к одному вопросу: как инстанцировать промис без ключевого слова new? )
источник

PV

Peter V in pro.js
Анатолий Облаухов
Собственно, всё сводится к одному вопросу: как инстанцировать промис без ключевого слова new? )
Никак
источник

PV

Peter V in pro.js
мне кажется ты изобретаешь require js
источник

АО

Анатолий Облаухов... in pro.js
На самом деле есть способы через prototype, они прекрасно работают с обычными функциями, но почему-то не хотят с Promise )
источник

АО

Анатолий Облаухов... in pro.js
Эх, пришлось писать вот так:
(addCustomScripts || cb => {cb(() => {}, () => {})})
источник

PV

Peter V in pro.js
Анатолий Облаухов
Эх, пришлось писать вот так:
(addCustomScripts || cb => {cb(() => {}, () => {})})
ты объясни чем тебя if не устраивает?
источник

АО

Анатолий Облаухов... in pro.js
Peter V
ты объясни чем тебя if не устраивает?
Тем что тело функции придётся писать два раза
источник