溺水墨斗鱼 2021-08-27 10:22 采纳率: 60%
浏览 25
已结题

为什么then方法中的实参,能传进function(resolve,reject)中?代码执行是一个什么样的顺序或流程?


import fs from 'fs';

function getFile(fpath){
    
    return new Promise(function(resolve,reject){
        
        fs.readFile(fpath,'utf8',(err,dataStr)=>{//指定回调函数,第一个参数是错误信息,二参是成功之后的结果
            if(err) return reject(err);//return是为了终止下面代码执行
            resolve(dataStr);
        })
    });
}

//调用这个方法,返回的promise对象,then方法用来预先指定成功和失败的回调函数
getFile('./files/11.txt').then((r1)=>{console.log(r1)},(err)=>{console.log(err.message)});
//另一种打印错误的写法
getFile('./files/11.txt').then((r1)=>{console.log(r1)}).catch(err=>{console.log(err.message)});
  • 写回答

4条回答 默认 最新

  • 一把编程的菜刀 2021-08-27 10:48
    关注

    你这个可以拆解成下面这样去理解

    import fs from 'fs';
    const fpath='./files/11.txt';
    const getFile= new Promise(function(resolve, reject) {
              fs.readFile(fpath,'utf8',(err,dataStr)=>{//指定回调函数,第一个参数是错误信息,二参是成功之后的结果
                if(err) return reject(err);//return是为了终止下面代码执行
                resolve(dataStr);
            })
    });
    
    
    getFile.then((r1)=>{
    console.log(r1)//成功状态
    }, (err)=>{
    console.log(err.message)//失败状态
    });
    
    

    这样拆解,就和es6的教程里面的一样了,这样就容易理解了吧,在教程里有说明了,then是给Promise对象实例传进去一个回调函数,一个成功的,一个失败的

    then方法可以接受两个回调函数作为参数。第一个回调函数是Promise对象的状态变为resolved时调用,第二个回调函数是Promise对象的状态变为rejected时调用。这两个函数都是可选的,不一定要提供。它们都接受Promise对象传出的值作为参数
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月24日
  • 已采纳回答 2月16日
  • 创建了问题 8月27日

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程