Вот несколько простых вопросов, основанных на поведении, которое я заметил в следующем примере, запущенном в node:
Q('THING 1').then(console.log.bind(console));
console.log('THING 2');
Выход для этого:
> "THING 2"
> "THING 1"
Вопросы:
1) Почему Q
реализован для ожидания перед запуском обратного вызова по значению, которое сразу же известно? Почему не Q
достаточно умный, чтобы первая строка могла синхронно выдавать свой вывод до того, как будет запущена вторая строка?
2) Каков промежуток времени между выводами "THING 2"
и "THING 1"
? Является ли это одним тиком процесса?
3) Могут ли быть проблемы с производительностью со значениями, которые глубоко завернуты в promises? Например, Q(Q(Q("THING 1")))
асинхронно ждет в 3 раза больше времени, даже если он может быть эффективно синхронно разрешен?