Javascript JS承诺在内部是如何工作的?

Javascript JS承诺在内部是如何工作的?,javascript,asynchronous,es6-promise,Javascript,Asynchronous,Es6 Promise,我想知道js承诺在内部是如何工作的 我用谷歌搜索过,但找不到答案(或者我不知道怎么用谷歌搜索) 我不知道你是怎么知道的 假设我有以下客户端代码: function whatever() { doSomethingLocally; callPromiseThatGoesAllOverTheWorldAndThenGetsBackToYou() .then( doSomethingLocallyAgain ); d

我想知道js承诺在内部是如何工作的

我用谷歌搜索过,但找不到答案(或者我不知道怎么用谷歌搜索)

我不知道你是怎么知道的

假设我有以下客户端代码:

function whatever() {
    doSomethingLocally;

    callPromiseThatGoesAllOverTheWorldAndThenGetsBackToYou()
        .then(
            doSomethingLocallyAgain
        );

     doSomeOtherThingLocally;
}

我想知道,当承诺实现时,它如何回到代码中的正确点(“doSomethingGloCallyAgain”)。

承诺只是一个奇特的返回值,您可以附加回调,而不是将它们传递给函数。添加一个很好的不变量,即回调永远不会立即调用,而是总是放在一个微任务队列中,这就差不多了。

而规范、它们在内部的实际工作方式则取决于规范的实现者(即JavaScript引擎)。你问这个问题是否有一个潜在的原因,也许这是一个更好的问题?我问这个问题是因为我不知道流是如何回到那个确切的点的。我不知道是否有一个套接字一直在用指针侦听某个内容,因此当它收到响应时,它会将流更改为该点。
doSomethingGlocallyGain
必须是一个函数。您将该函数传递给promise,它只需在完成后调用该函数。这没有什么神奇之处。下面是回调如何工作的简化示例:
函数do(f){setTimeout(()=>{/*做一些内部工作*/f();},3000);};do(()=>console.log('callme me maybe'))。在本例中,
do
接受一个函数,并在它准备好时调用它。如果您对(本机ES6实现的)引擎内部不感兴趣,您可能会感兴趣,或者是的,这很有帮助,@Bergi。我还要补充一点:我在想,你可以调用一个promises,这个promises会转到一个api,得到你想要的结果,然后返回给你,还有我如何使它与我的代码同步。