回调函数的使用
对于异步操作的结果,我们无法获取到,通常使用回调函数来处理
function getSomething(cb) { var r = 0; setTimeout(function() { r = 2; cb(r); }, 10); } function compute(x) { console.log(x * 2); } getSomething(compute);
Prosmise的本质
在异步操作中,经常要用到回调函数,因为异步操作使用return并不能及时返回我们i昂要的结果
Promise是单纯的为了解决回调地狱问题,并不能帮我们减少代码量
Promise的概念介绍
- 1.Promise是一个构造函数,可以通过new Promise()得到一个promise实例
- 2.promise有两个方法,分别是resolve(成功后的回调函数)和reject(失败之后的回调函数)
- 3.promise的prototype属性上,有一个.then()方法,promise实例都可以访问.then()方法
- 4.Promise表示一个异步操作,一个promise实例就表示一个具体的异步操作
- 5.因为promis是一个异步操作,所以内部拿到操作结果后,无法使用return把操作的结构返回给调用者,只能通过回调函数把结果返回给调用者,异步操作的结果只有两种状态,成功或者失败,成功用resolve回调函数,失败用reject回调函数
- 6.我们在promise实例上,调用.then()方法,预先为promise异步操作,指定成功或失败的回调函数
形式上的和具体的Promise异步操作
var promise = new Promise() // 这个new出来的实例就是形式上的异步操作:我们只知道这是一个异步操作,但是做什么具体的异步事情,还不知道
var promise = new Promise(function() {}) // 这个function内部写的就是具体的异步操作
promise实例创建就会执行
```
//因为promise实例创建就会执行,所以我们通常将它包裹在一个函数中,通过具体需求调用函数来执行
const path = require('path')
const fs = require('fs')
function getFilebyPath(fpath) {
var promise = new Promise(function() {
fs.readFile(fpath,'utf-8',(err,dataStr) => {
if( err ) throw err;
console.log(dataStr);
});
});
}
getFilebyPath('./file/1.txt');
```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。