169 похожих чатов

5 ответов

8 просмотров

насколько будет больше задержка если в функции возвращать промис и объявить ее async?

Petr Filippov
не знаю, сколько?

https://kanby.medium.com/%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-return-await-%D0%BF%D0%BB%D0%BE%D1%85%D0%B0%D1%8F-%D0%B8%D0%B4%D0%B5%D1%8F-e87b70015f0c Меня довольно давно интересоавл этот вопрос и я пытался найти ответы в официальной документации но либо я плохо ищу либо там нет такой информации. Если кто в курсе, поделитесь пожалуйста ссылкой в комментарии. Тем не менее я нашел способ проверить эффективность данного подхода и как оказалось использование ключевого слова async и явное создание Promise объекта посредством выражения new Promise(...) внутри функции является не эффективным и вот почему. На основе примера "Почему использовать return await плохая идея" я создал тестовый файл и проверил выполнение кода таким образом: // promise-hooks.js const hooks = require("async_hooks"); const fs = require("fs"); let indent = 0; module.exports = hooks.createHook({ promiseResolve(asyncId) { const indentStr = " ".repeat(indent); fs.writeSync(1, `${indentStr}resolved: ${asyncId}\n`); }, init(asyncId, type, triggerAsyncId, resource) { const eid = hooks.executionAsyncId(); const indentStr = " ".repeat(indent); const dt1 = `${indentStr}${type}(${asyncId})`; const dt2 = `trigger: ${triggerAsyncId}`; const dt3 = `resource: ${resource.parentId}`; const dt4 = `execution: ${eid}`; fs.writeSync(1, `${dt1}, ${dt2}, ${dt3}, ${dt4}\n`); }, before(asyncId) { const indentStr = " ".repeat(indent); fs.writeSync(1, `${indentStr}before: ${asyncId}\n`); indent += 2; }, after(asyncId) { indent -= 2; const indentStr = " ".repeat(indent); fs.writeSync(1, `${indentStr}after: ${asyncId}\n`); }, destroy(asyncId) { const indentStr = " ".repeat(indent); fs.writeSync(1, `${indentStr}destroy: ${asyncId}\n`); }, }); Тестовый код (без использования async) const hooks = require("./promise-hooks.js"); hooks.enable(); function asyncTest() { return new Promise((resolve, reject) => resolve()); } asyncTest(); Результат выполнения: PROMISE(2), trigger: 1, resource: undefined, execution: 1 resolved: 2 Теперь обявляем асинхронную функцию с помощью async const hooks = require("./promise-hooks.js"); hooks.enable(); async function asyncTest() { return new Promise((resolve, reject) => resolve()); } asyncTest(); Результат выполнения: PROMISE(2), trigger: 1, resource: undefined, execution: 1 PROMISE(3), trigger: 1, resource: undefined, execution: 1 resolved: 3 resolved: 2 before: 2 PROMISE(4), trigger: 3, resource: undefined, execution: 2 after: 2 before: 4 resolved: 2 resolved: 4 after: 4 Как видим из примера в результате получаем два Promise-объекта, похоже ключевое слово async неявно оборачивает возвращаемый результат функции в Promise, что по сути является неэффективным. Поэтому в случае явного использования new Promise(), ключевое слово async лучше не использовать и наоборот.

🅰️nimeCoder
https://kanby.medium.com/%D0%BF%D0%BE%D1%87%D0%B5%...

Не читал многабукаф, но неужели лишний промис с уже известным значением прямо очень зпгрузит процессор?

ベラルサエド ❄️
Не читал многабукаф, но неужели лишний промис с уж...

🤷‍♂️ думаю когда их много то мб разица будет

Похожие вопросы

Обсуждают сегодня

тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
читать файл максимально быстро? странный вопрос))
zamtmn
53
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
значить например он учился в СДУ то получается он особенный?)
Asets Serikov
11
А кто такой мужчина в твоем понимании Азиз?
who?です 🐈
11
Карта сайта