什么是 Promise?
Promise 是 ES6 中新规定的一门技术,是 JavaScript 中进行异步编程的新解决方案,当然,之前的旧方案是指:单纯使用回调函数。因此,Promise 的出现很好地解决了”回调地狱”的情况。这么说,可能有点抽象。具体是指:1.从语法上来讲:Promise 是一个构造函数 2.从功能上来讲:Promise 对象用来封装一个异步操作并可以获取其成功或失败的结果
常见的异步操作有:使用 Node.js 中的 fs 模块进行文件操作、数据库(MySQL/mongoDB)操作、Ajax 进行网络请求、定时器等。
为什么上面用的是回调函数,而不是 Promise 呢?
Promise 相对于之前的回调函数有什么优势吗?(面试知识点)
-
Promise支持链式调用,可以解决回调地狱问题
什么是回调地狱?
回调地狱即是回调函数嵌套使用,外部回调函数异步执行的结果是嵌套的回调函数执行的条件
回调地狱的缺点?
不便于阅读、不便于异常处理
-
指定回调函数的方式更加灵活
使用旧方式时,必须在启动异步任务前指定;而 Promise,不需要,其启动过程:启动异步任务 => 返回 Promise 对象 => 给 Promise 对象绑定回调函数(甚至可以在异步任务结束后指定/多个)
这里举个例子:使用 Promise 模拟抽奖