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)});
为什么then方法中的实参,能传进function(resolve,reject)中?代码执行是一个什么样的顺序或流程?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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对象传出的值作为参数
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?
- ¥15 matlab(相关搜索:紧聚焦)
- ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
- ¥15 路易威登官网 里边的参数逆向
- ¥15 Arduino无法同时连接多个hx711模块,如何解决?
- ¥50 需求一个up主付费课程