約束の練習問題

1.Promiseパッケージのファイル読み取り機能

/* 参数:path文件路径
返回:promise对象 */
function readminfile(path){
    
    
	return new Promise((resolve,reject) => {
    
    
		//读取文件
		require(fs).readFile(path,(err,data) => {
    
    
			//判断
			if(err) reject(err);
			//成功
			resolve(data);
		});
	});
}

//读取文件操作
readminfile('./content/readsmine.txt')  //此处点儿调用方法可换行
.then(value=>{
    
    
	console.log(value.toString());
},reason=>{
    
    
	console.log(reason);
})

2.Promise変換用のutil.promisify

//引入util模块
const util = require(util);
//引入fs模块
const fs = require(fs);
//返回一个新的函数
let mineReadFile = util.promisify(fs.readFile);

mineReadFile('./content/readmine.txt').then(value => {
    
     console.log(value.toString()) });

PromiseはAJAXリクエストをカプセル化します

/* 封装一个函数sendAJAX 发送 GET AJAX 请求
参数:URL
返回结果Promise对象 */

function sendAJAX(url){
    
    
	return new Promise((resolve,reject => {
    
    
		const xhr = new XMLHttpRequest();
		xhr.open('GET', url);
		xhr.send();
		//处理结果
		xhr.onreadystatechange = function (){
    
    
			if(xhr.readyState === 4){
    
    
				//判断成功
				if(xhr.status >= 200 && xhr.status < 300){
    
    
					resolve(xhr.response);
				}else{
    
    
					reject(xhr.status);
				}	
			}
		}
	});

sendAJAX('https://api.apiopen.top')
.then(value => {
    
    
	console.log(value);
}, reason => {
    
    
	console.warn(reason);
});


    属性状態でのインスタンスオブジェクトの約束[PromiseState]
    保留
    解決/未定成功しfullfilled
    失敗拒否

ステータスが
    保留中から解決
    済みの保留中から拒否済みに変わります
    (成功から失敗に変更することはできません)

PromiseResultは成功または失敗の結果を保存し、解決および拒否された場合にのみ変更を加えることができます

ここに画像の説明を挿入

Promise.allは新しいpromiseを返します。すべてのpromiseが成功した場合にのみ成功し、1つのpromiseが失敗した場合は直接失敗します。

let p1 = new Promise((reslove, rejected) => {
    
    
	reslove("ok");
});
let p2 = new Promise.reslove("success");
let p3 = new Promise.reslove('oh heay');

const result = Promsie.all([p1,p2,p3]);
console.log(result);

promise.raceは、最初のpromiseの結果によって異なります。Promiseを返す最初のオブジェクトは成功します。

let p1 = new Promise((reslove, rejected) => {
    
    
	setTimeout(){
    
    () => {
    
    
		reslove("ok");
	},1000}; //定时器一秒之后运行。
});
let p2 = new Promise.reslove("success"); //此时篇p2为第一个执行的参数
let p3 = new Promise.reslove('oh heay');

const result = Promsie.race([p1,p2,p3]);
console.log(result);

おすすめ

転載: blog.csdn.net/sinat_33940108/article/details/114012286