1. Función de archivo de lectura de paquete de promesa
/* 参数: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. util.promisify para la conversión de Promise
//引入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 encapsula la solicitud 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);
});
Un atributo en el objeto de instancia de estado de la Promesa [PromiseState]
pendiente
resuelto / cumplido indeciso
rechazado exitosamente falló
El estado cambia de
pendiente pendiente a resuelto
pendiente pendiente a rechazado
(es imposible cambiar de éxito a fracaso)
PromiseResult guarda el resultado del éxito o el fracaso, solo resuelto y rechazado puede realizar cambios en él
Promise.all devuelve una nueva promesa. Solo cuando todas las promesas tienen éxito, tendrá éxito, y si una promesa falla, fallará directamente.
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 depende del resultado de la primera promesa. El primer objeto que devuelve una promesa tiene éxito.
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);