微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ES6—42:Promise

基本使用

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);
});

Promise.prototype.then 方法

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

  1. 返回非Promise对象

  2. 返回Promise对象(resove状态)

  3. 返回Promise对象(reject状态)

Promise对象的catch方法

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

使用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());
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐