В чем разница между этими сценариями, когда дело доходит до стека вызовов?Promises vs function calls/setTimeOut
Сценарий 1:
function A(){//doStuff};
function B(){//doStuff};
Сценарий 2:
function A(){//doStuff};
window.setTimeOut(function B(){//doStuff}, 5000);
Сценарий 3:
function A(){//doStuff}.then(function B(){//doStuff});
Я обсуждал баг с кем-то, и они предположили, что я просто добавить setTimeOut ко второй функции и дождитесь, если она срабатывает. Я использую библиотеку обещаний A +, и мне интересно, можно ли просто приложить обещание к первой функции и запустить вторую, когда будет выполнена функция A.
Также я не уверен, что основное отличие setTimeOut и обещания будет от первого сценария. Я знаю, что обещания и тайм-ауты перемещают функции до конца стека вызовов, но я не уверен, что произойдет после этого момента и как это будет отличаться от сценария 1. Любая информация будет оценена.
как B "начать работать до того, как A закончен", если JS однопоточный? – dandavis
@ dandavis Например, функция A() {setTimeout (function() {alert ("HI");}, 6000); } 'функция вернулась, но это вызовет побочные эффекты на 6 секунд дольше. –
Могу ли я назвать обещание функции, которая возвращает значение? Даже если он просто возвращает true, например. –