gpt4 book ai didi

javascript - promise 与函数调用/setTimeOut

转载 作者:行者123 更新时间:2023-11-30 17:06:43 26 4
gpt4 key购买 nike

当涉及到调用堆栈时,这些场景之间有什么区别?

场景一:

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 并等待它是否触发。我正在使用一个 promise A+ 库,我想知道是否可以将一个 promise 附加到第一个函数并在函数 A 完成时触发第二个函数。

此外,我不确定 setTimeOut 和 promise 与第一种情况的主要区别是什么。我知道 promises 和 timeouts 将函数移动到调用堆栈的末尾,但我不确定在那之后会发生什么,以及这与场景 1 有何不同。任何信息将不胜感激。

最佳答案

I am wondering if it is possible to just attach a promise to the first function and fire the second one when function A is done.

Promises 通过 Hook 函数的返回值来工作。一个函数返回一个 promise,你可以 Hook 它。 JavaScript 没有公开任何方法来检测函数何时完成执行。因此,例如,如果您有一个 API:

api.someAsyncThing(); // does not return a promise

没有办法知道函数何时结束运行,除非它暴露出副作用,在这种情况下,您可以在 setInterval 内部进行轮询并创建一个 promise - 虽然这非常 hacky。

Also I am not sure what the main difference of the setTimeOut and the promise would be vs the first scenario.

setTimeout 引入了超时,很可能 A 没有在超时内完成,B 会在 A 完成嵌套回调之前开始运行。唯一的区别是它可能等待足够长的时间 - 这称为 .

关于javascript - promise 与函数调用/setTimeOut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com