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 cmd批处理参数如果含有双引号,该如何传入?
- ¥15 fx2n系列plc的自控成型机模拟
- ¥15 时间序列LSTM模型归回预测代码问题
- ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
- ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
- ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
- ¥15 c语言数据结构高铁订票系统
- ¥15 关于wkernell.PDB加载的问题,如何解决?(语言-c#|开发工具-vscode)
- ¥100 某宝多次访问被拒绝,求解
- ¥15 (标签-STM32|关键词-智能小车)