vue3之promise 方法执行顺序

1.promise是什么? 1.解决异步嵌套的问题 2.解决回调问题
(函数里面有函数 保证执行顺序)
3.链式的思想连接其他异步
异步的执行顺序是不确定的…
容器内部有3种状态: (状态不可回退)

      1.Pending   对象创建的初始状态(悬而未决)
      2.Fullfilled   成功(执行)
      3.Rejected   失败

2.使用

//读文件的操作
const fs=require('fs');
const path=require('path');
let p=new Promise((resolve,reject)=>{
    fs.readFile((err,data)=>{
	if(err){
	    reject(err);//输出错误
	}
       	resolve(data);//输出数据

   });

});
p.then((data)=>{
        console.log(data.toString());
    }).catch((err)=>{
        console.log(err);

  });//拿到promise对象操作数据,如果有异常执行catch里面的

 3.promise是链式的(data的数据可以.then向下传递 )(在中间出错不会执行后面的)

 const fs=require('fs');
 const path=require('path');	 
	
 let ps=new Promise((resolve,reject)=>{
	 fs.readFile(path.join(__dirname,'a.txt'),(err,data)=>{
	 	console.log(data.toString());
		if(err){
			reject()
		}
		resolve(data)
	 });
 }).then((data)=>{
	 new Promise((resolve,reject)=>{
		 fs.readFile(path.join(__dirname,'b.txt'),(err,data)=>{
		 	console.log(data.toString());
		 		if(err){
		 			reject()
		 		}
		 		resolve(data)
		 });
		 
	 });
	 
 }).then((data)=>{
	  new Promise((resolve,reject)=>{
	  		 fs.readFile(path.join(__dirname,'c.txt'),(err,data)=>{
	  		 	console.log(data.toString());
	  		 		if(err){
	  		 			reject()
	  		 		}
	  		 		resolve(data)
	  		 });
	  		 
	  });
	 
 }).then((data)=>{
	  new Promise((resolve,reject)=>{
	  		 fs.readFile(path.join(__dirname,'d.txt'),(err,data)=>{
	  		 	console.log(data.toString());
	  		 		if(err){
	  		 			reject()
	  		 		}
	  		 		resolve(data)
	  		 });
	  		 
	  });
	 
 }).catch((err)=>{
	 console.log(err);
 });
 
 
  
	
// fs.readFile(path.join(__dirname,'b.txt'),(err,data)=>{
// 	console.log(data.toString());
// });
// fs.readFile(path.join(__dirname,'c.txt'),(err,data)=>{
// 	console.log(data.toString());
// });
	

 4.es6表达多个传入任意多个参数

 let func=(...args)=>{
       //调用其他函数也可以
         funcA(...args);

}

 5.优化 直接return 一个函数
封装一个函数掉用promise

//读文件的操作
const fs=require('fs');
const path=require('path');
let readFile=(...args)=>{
	return new Promise((resolve,reject)=>{
		fs.readFile(...args,(err,data)=>{
			console.log(data.toString());
				if(err){
					reject()
				}
				resolve(data)
		});
		
	})
	
}
readFile(path.join(__dirname,'a.txt')).then((data)=>{
	return readFile(path.join(__dirname,'b.txt'))
	
}).then((data)=>{
	return readFile(path.join(__dirname,'d.txt'))
	
}).catch((err)=>{
	console.log(err);
});

6.promise加强 多个异步放在一个promise(自动形成链路 执行有顺序 等待结果后才返回)

Promise.all([
       readFile(path.join(__dirname,'a.txt')),
       readFile(path.join(__dirname,'b.txt')),
	   readFile(path.join(__dirname,'c.txt'))
]).then(([data1,data2,data3])=>{
		console.log(data1.toString());
		console.log(data2.toString());
		console.log(data3.toString());				   
});

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值