- 《JavaScript再出发》系列文章阅读
- 《仙宗》发布招仙贴,广招天下道友
文章目录
JavaScript中Promise的基本概念、使用方法,以及回调地狱规避
本文是上篇《JavaScript异步与回调》的后继,建议先行阅读,以便理解本文的核心内容。
一、前言
异步是为了提高CPU的占用率,让其始终处于忙碌状态。
有些操作(最典型的就是I/O)本身不需要CPU参与,而且非常耗时,如果不使用异步就会形成阻塞状态,CPU空转,页面卡死。
在异步环境下发生I/O操作,CPU就把I/O工作扔一边(此时I/O由其他控制器接手,仍然在数据传输),然后处理下一个任务,等I/O操作完成后通知CPU(回调就是一种通知方式)回来干活。
《JavaScript异步与回调》想要表达的核心内容是,异步工作的具体结束时间是不确定的,为了准确的在异步工作完成后进行后继的处理,就需要向异步函数中传入一个回调,从而在完成工作后继续下面的任务。
虽然回调可以非常简单的实现异步,但是却会由于多重嵌套形成回调地狱。避免回调地狱就需要解嵌套,将嵌套编程改为线性编程。
Promise
是JavaScript
中处理回调地狱最优解法。
二、Promise基本概念
Promise
可以翻译为“承诺”,我们可以通过把异步工作封装称一个Promise
,也就是做出一个承诺,承诺在异步工作结束后给出明确的信号!
Promise
语法:
let promise = new Promise(function(resolve,reject){
// 异步工作
})
通过以上语法,我们就可以把异步工作封装成一个Promise
。在创建Promise
时传入的函数就是处理异步工作的方法&