JS Promise
//1. promise是一个构造函数:
// 创建一个promise实例:
// const p=new Promise();(代表一个异步操作)
//2. Promise.prototype上包含一个.then()方法,因此每一次new Promise()构造函数得到的实例对象都可以通过原型链的方式访问到.then()方法:
// 例如 p.then();
// 3. .then()方法用来预先指定成功和失败的回调函数
// p.then(成功的回调函数(必选),失败的回调函数)
// 4.基于then-fs读取文件内容:安装 then-fs包,then-fs提供一个readFile()方法,可异步读取文件内容(不保证读取顺序),他返回值是promise实例对象;
import thenFS from 'then-fs'
// thenFS.readFile('','utf8').then((res)=>{
// })
// promise支持链式调用(以此来按顺序读取文件):
// thenFS.readFile('./file/1.txt','utf8').then((r1)=>{
// console.log(r1);
// return thenFS.readFile('./file/2.txt','utf8');
// }).then((r2)=>{
// console.log(r2);
// thenFS.readFile('file/3.txt','utf8');
// }).then((r3)=>{
// console.log(r3);
// })
// 5. 通过.catch()捕获其之前错误:
// thenFS.readFile('./file/1.txt','utf8').then((r1)=>{
// console.log(r1);
// return thenFS.readFile('./file/2.txt','utf8');
// })
// .catch(err=>{
// console.log(err.message);
// })
// .then((r2)=>{
// console.log(r2);
// thenFS.readFile('file/3.txt','utf8');
// }).then((r3)=>{
// console.log(r3);
// })
// 6.promise.all方法()发起并行的异步操作,等所有异步操作全结束后才会执行.then()操作
// const promiseArr=[
// thenFS.readFile('./file/1.txt','utf8'),
// thenFS.readFile('./file/2.txt','utf8'),
// thenFS.readFile('./file/3.txt','utf8'),
// ]
// Promise.all(promiseArr).then(result=>{
// console.log(result);
// })
// ['111','222','333']
// 7.promise.race()方法只要任何一个异步操作完成,就立即执行下一个.then()操作
// Promise.race(promiseArr).then(result=>{
// console.log(result);
// })
// 8.自定义getFile方法:
import fs from 'fs'
function getFile(fpath){
return new Promise(function(resolve,reject){ //function()里是一个具体的异步操作
fs.readFile(fpath,'utf8',(err,dataStr)=>{
if(err) return reject(err);
resolve(dataStr);
})
})
}
getFile('./file/1.txt').then((r1)=>{console.log(r1);},(err)=>{console.log(err,message);})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本