微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Promise

回调函数的使用

对于异步操作的结果,我们无法获取到,通常使用回调函数来处理
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] 举报,一经查实,本站将立刻删除。

相关推荐