Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обещания в JavaScript (https://javascript.ru/forum/misc/59346-obeshhaniya-v-javascript.html)

_Alex9_ 07.11.2015 10:38

Обещания в JavaScript
 
Читаю статью https://learn.javascript.ru/promise, но не понимаю сути. Объясните на пальцах, что позволяет делать функционал promise? Спасибо.

рони 07.11.2015 11:38

Цитата:

Сообщение от _Alex9_
Объясните на пальцах, что позволяет делать функционал promise?

:) дождаться

loljs 07.11.2015 12:59

Цитата:

Сообщение от _Alex9_ (Сообщение 394924)
Читаю статью https://learn.javascript.ru/promise, но не понимаю сути. Объясните на пальцах, что позволяет делать функционал promise? Спасибо.

Грубо говоря, писать асинхронный код без callback-hell

_Alex9_ 07.11.2015 17:25

Он позволяет одновременно выполнять две задачи?

loljs 07.11.2015 17:28

Цитата:

Сообщение от _Alex9_
Он позволяет одновременно выполнять две задачи?

С точки зрения реального выполнения -- нет. JS однопоточен. Параллельное выполнение позволяют вебверкеры. Но там есть ограничения.

loljs 07.11.2015 17:53

Цитата:

Сообщение от _Alex9_ (Сообщение 395008)
Он позволяет одновременно выполнять две задачи?

Но в принципе, ты можешь запилить user-level threads, на основе асинхронности и сопрограмм, например.

_Alex9_ 07.11.2015 19:33

То есть асинхронные методы вроде setTimeout блокируют выполнение основного потока на время своей отработки? Что ты подразумеваешь под сопрограммами? И как примерно делается user-level threads? Первый раз о такой возможности узнаю.

loljs 07.11.2015 20:12

Цитата:

Сообщение от _Alex9_
То есть асинхронные методы вроде setTimeout блокируют выполнение основного потока на время своей отработки?

Не сами они, а их коллбеки. Сами они вообще синхронно выполняются.

Единственный поток, в JS нет никакого "основного" потока.
Цитата:

Сообщение от _Alex9_
Что ты подразумеваешь под сопрограммами?

https://en.wikipedia.org/wiki/Coroutine
Цитата:

Сообщение от _Alex9_
И как примерно делается user-level threads?

Сопрограммы елдят некоторые куски кодов поочередно, на некотором абстрактном уровне можно считать, что эти коды выполняются параллельно
Цитата:

Сообщение от _Alex9_
Первый раз о такой возможности узнаю.

Это наиболее распространенная реализация

laimas 08.11.2015 02:42

К теме http://habrahabr.ru/company/mailru/blog/269465/

loljs 08.11.2015 02:58

laimas,
Какой то странный чувак
doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

Цитата:

Если вы знаете ответ, то разрешите вас поздравить — по части промисов вы ниндзя. Пожалуй, дальше этот пост вам можно не читать.
Если кто-то не знает ответ, у него по ходу с головой проблемы, а не с промисами:)


Часовой пояс GMT +3, время: 01:31.