ES6—42:Promise

基本使用

ES6—42:Promise

Promise封装读取文件

ES6—42:Promise
ES6—42:Promise

Promise封装AJAX请求

const p = new Promise((resolve,reject) => {
    // 1. 创建对象
    const xhr = new XMLHttpRequest();
    // 2. 初始化
    xhr.open("GET","https://api.apiopen.top/getJoke");
    // 3. 发送
    xhr.send();
    // 4. 绑定事件,处理响应结果
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
            if (xhr.status >= 200 && xhr.status <= 300) {
                resolve(xhr.response);
            } else {
                reject(xhr.status);
            }
        }
    }
});

p.then(function(value) {
    console.log(value);
},function(reason) {
    console.log(reason);
});

ES6—42:Promise

Promise.prototype.then 方法

then方法的返回值分以下三种情况:

  1. 返回非Promise对象
    ES6—42:Promise
  2. 返回Promise对象(resove状态)
    ES6—42:Promise
  3. 返回Promise对象(reject状态)
    ES6—42:Promise

Promise对象的catch方法

此方法是当Promise对象的状态为reject时,调用的方法,参数只是一个函数。

ES6—42:Promise

使用Promise读取三个文件中的内容

// 首先,引入fs模块
const fs = require('fs');

const p = new Promise((resolve,reject) => {
    fs.readFile("./test.md",(err,data) => {
        resolve(data);
    });
});

p.then((value) => {
    return new Promise((resolve,reject) => {
        fs.readFile("./木言人.md",(err,data) => {
            resolve([value,data]);
        });
    });
}).then((value) => {
    return new Promise((resolve) => {
        fs.readFile("./读书有感.md",(err,data) => {
            value.push(data);
            resolve(value);
        });
    });
}).then((value) => {
    console.log(value.toString());
});

ES6—42:Promise

上一篇:Promise 的构造函数


下一篇:Promise学习