15 # promise 延迟对象的作用

简介: 15 # promise 延迟对象的作用

上一节我们在实现的 promise 里加了规范测试入口,这个就是 promise 延迟对象

// promise 延迟对象 规范测试入口
KaimoPromise.defer = KaimoPromise.deferred = function () {
    let dfd = {};
    dfd.promise = new KaimoPromise((resolve, reject) => {
        dfd.resolve = resolve;
        dfd.reject = reject;
    });
    return dfd;
};

那么这个东东有什么作用?

我们看个例子:下面的 read 方法里,直接上来就套了一层,能不能解套一层 promise

const fs = require("fs");
function read(filename) {
    return new Promise((resolve, reject) => {
        fs.readFile(filename, "utf-8", function (err, data) {
            if (err) reject(err);
            resolve(data);
        });
    });
}
read("./file/name.txt")
    .then((data) => {
        // return 123;
        // return read("./file/age.txt");
        throw new Error("接口异常");
    })
    .then(
        (data) => {
            console.log("success----->", data);
        },
        (err) => {
            console.log("err----->", err);
        }
    );

下面我们用 defer 来改造一下,这样我们就解决了一层嵌套问题

const fs = require("fs");
const KaimoPromise = require("./14/kaimo-promise.js");
function read(filename) {
    let dfd = KaimoPromise.defer();
    fs.readFile(filename, "utf-8", function (err, data) {
        if (err) dfd.reject(err);
        dfd.resolve(data);
    });
    return dfd.promise;
}
read("./file/name.txt")
    .then((data) => {
        return data;
    })
    .then(
        (data) => {
            console.log("success----->", data);
        },
        (err) => {
            console.log("err----->", err);
        }
    );

目录
相关文章
|
1月前
|
数据采集 前端开发 JavaScript
如何在爬虫过程中正确使用Promise对象和async/await?
如何在爬虫过程中正确使用Promise对象和async/await?
53 2
|
1月前
|
设计模式 前端开发 JavaScript
|
1月前
|
JSON 前端开发 JavaScript
ES6类的使用和定义.Json.Promise对象的使用
ES6类的使用和定义.Json.Promise对象的使用
36 0
|
1月前
|
前端开发 JavaScript API
Promise 对象与 Promises/A+ 规范
Promise 对象与 Promises/A+ 规范
41 0
|
1月前
|
前端开发
用Promise对象实现的 Ajax
用Promise对象实现的 Ajax
14 0
|
1月前
|
前端开发 JavaScript 数据处理
JavaScript中的异步编程及Promise对象
【2月更文挑战第3天】 传统的JavaScript编程模式在处理异步任务时常常会导致回调地狱和代码可读性较差的问题,而Promise对象的引入为解决这一问题提供了一种优雅的解决方案。本文将介绍JavaScript中的异步编程方式以及Promise对象的使用方法和优势,帮助读者更好地理解和运用异步编程技术。
30 8
|
1月前
|
前端开发 算法
2723. 两个 Promise 对象相加
2723. 两个 Promise 对象相加
25 0
|
6月前
|
前端开发
ES6学习(八)—Promise对象 超鸡重要
ES6学习(八)—Promise对象 超鸡重要
|
10月前
|
前端开发
创建一个promise对象
创建一个promise对象
49 0
|
1月前
|
前端开发 JavaScript
如何处理 JavaScript 中的异步操作和 Promise?
如何处理 JavaScript 中的异步操作和 Promise?
25 1