美文网首页
Promise如何实现异步resolve的——解惑而已

Promise如何实现异步resolve的——解惑而已

作者: monvhh | 来源:发表于2018-11-06 23:10 被阅读0次

    想了解完整原理的看
    https://mengera88.github.io/2017/05/18/Promise%E5%8E%9F%E7%90%86%E8%A7%A3%E6%9E%90/

    let promiseA = new Promise((resolve,reject)=>{});
    
    //other codes here.......
    
    promiseA.then(()=>{
    //todo codes here
    }).catch(err=>{
    //reject codes here
    })
    

    怎么做到在该resolve的时候去执行我写在then里的方法的??
    既然已经异步执行了别的代码,是怎么回来的?无论我在哪里写的then,它都能在该resolve的时候resolve掉。

    其实很简单,不过过一段时间就又很困惑。

    Q.什么时候该resolve?

    A.

    依据new Promise内部的写法,通常有如下几种可能:
    比如 setTimeout:timer到时的时候
    比如 IO读写:接收到数据的时候

    Q.so js runtime是如何知道该resolve了?

    A.

    比如 setTimeout:加入EventLoop,走EventLoop逻辑。runtime中其他线程负责这种切换。
    比如 IO读写,接收到数据的时候,同样,runtime中的负责IO的线程,会将其加入到EventLoop中。

    当然以上加入到EventLoop中的还是一个Promise。所以最后还是以Promise的方式,走microTask的EventLoop。
    这是EventLoop的问题,见另一篇文章。

    So,跟callback一样,不要再纠结了,咋能换件衣服我就觉得你高深莫测!

    相关文章

      网友评论

          本文标题:Promise如何实现异步resolve的——解惑而已

          本文链接:https://www.haomeiwen.com/subject/dwwpxqtx.html