巧用 `Promise.all` 实现函数:有一个 Promise 被 resolve 整个函数就被 resolve

2018-02-04
阅读 2 分钟
3.8k
对于这样的问题,一个比较简单的方案是依次调用各个接口,如果前一个接口未成功返回再调用第二个接口。这样做的好处是对于服务器资源消耗比较小,但对于用户来说效率非常低下。设想调用第一个接口经过 20 秒超时出错才调用第二个接口,如果第二个接口又是 20 秒超时,用户就已经等待了 40 秒。用户的等待时间按线性增长...

使用 Web Worker 实现简单的非阻塞异步

2017-12-24
阅读 3 分钟
9.1k
之前的文章提到了 JavaScript 中的异步编程,然而无论早就存在的 setTimeout 还是 ES6 中的 Promise,它们都是 阻塞 异步,执行函数的时候,会阻塞线程。setTimeout 只会把一个函数延后执行,但还是在主线程中执行,执行函数的时候会阻塞线程。换句话说,setTimeout 只实现了过程间并发(concurrent)而未实现并行(para...