背景
试想在一个需要频繁更新数据的场景(例如:监控、图表类),常规方法是设置一个间隔 N 秒的定时器 setInterval
;但是这种方式存在一个问题,当前一个请求时间过长时(超过了间隔时间),后一个请求的接口响应会先于前一个请求,也就是说,将导致旧的数据渲染会覆盖新的数据渲染。
"Promise + Async&Await + Array.reduce + 函数递归 解决网络/接口请求的依次/排队不间断间隔访问"继续阅读
试想在一个需要频繁更新数据的场景(例如:监控、图表类),常规方法是设置一个间隔 N 秒的定时器 setInterval
;但是这种方式存在一个问题,当前一个请求时间过长时(超过了间隔时间),后一个请求的接口响应会先于前一个请求,也就是说,将导致旧的数据渲染会覆盖新的数据渲染。
"Promise + Async&Await + Array.reduce + 函数递归 解决网络/接口请求的依次/排队不间断间隔访问"继续阅读
Promise
Promise
的前世今生Promise
最早出现在 1988 年,由 Barbara Liskov、Liuba Shrira 首创(论文:Promises: Linguistic Support for Efficient Asynchronous Procedure Calls in Distributed Systems)。并且在语言 MultiLisp 和 Concurrent Prolog 中已经有了类似的实现。
JavaScript 中,Promise
的流行是得益于 jQuery 的方法 jQuery.Deferred()
,其他也有一些更精简独立的 Promise
库,例如:Q、When、Bluebird。
"讲讲 Promise/实战"继续阅读
window
)的拒绝状态监听事件unhandledrejection
当 Promise 被拒绝,并且没有提供拒绝处理程序时,触发该事件。rejectionhandled
当 Promise 被拒绝时,若拒绝处理程序被调用,触发该事件。"Promise 监听拒绝状态"继续阅读
使用 async-await
等待异步操作完成的时候,如果前后两个异步操作不存在依赖关系,同时触发应该是更好的方案。
"async-await 同时触发(等待)多个异步操作"继续阅读
then()方法的作用是Promise实例添加解决(fulfillment)和拒绝(rejection)状态的回调函数。then()方法会返回一个新的Promise实例,所以then()方法后面可以继续跟另一个then()方法进行链式调用。
"ES6 Promise对象then方法链式调用"继续阅读