返回介绍

Promise 加入 ES6 标准

发布于 2024-03-01 12:53:38 字数 2004 浏览 0 评论 0 收藏 0

从 jquery v1.5 发布经过若干时间之后,Promise 终于出现在了 ES6 的标准中,而当下 ES6 也正在被大规模使用。

本节内容概述

  • 写一段传统的异步操作
  • Promise 进行封装

写一段传统的异步操作

还是拿之前讲 jquery deferred 对象时的那段 setTimeout 程序

var wait = function () {
    var task = function () {
        console.log('执行完成')
    }
    setTimeout(task, 2000)
}
wait()

之前我们使用 jquery 封装的,接下来将使用 ES6 的 Promise 进行封装,大家注意看有何不同。

Promise 进行封装

const wait =  function () {
    // 定义一个 promise 对象
    const promise = new Promise((resolve, reject) => {
        // 将之前的异步操作,包括到这个 new Promise 函数之内
        const task = function () {
            console.log('执行完成')
            resolve()  // callback 中去执行 resolve 或者 reject
        }
        setTimeout(task, 2000)
    })
    // 返回 promise 对象
    return promise
}

注意看看程序中的注释,那都是重点部分。从整体看来,感觉这次比用 jquery 那次简单一些,逻辑上也更加清晰一些。

  • 将之前的异步操作那几行程序,用 new Promise((resolve,reject) => {.....}) 包装起来,最后 return 即可
  • 异步操作的内部,在 callback 中执行 resolve() (表明成功了,失败的话执行 reject

接着上面的程序继续往下写。 wait() 返回的肯定是一个 promise 对象,而 promise 对象有 then 属性。

const w = wait()
w.then(() => {
    console.log('ok 1')
}, () => {
    console.log('err 1')
}).then(() => {
    console.log('ok 2')
}, () => {
    console.log('err 2')
})

then 还是和之前一样,接收两个参数(函数),第一个在成功时(触发 resolve )执行,第二个在失败时(触发 reject ) 时执行。而且, then 还可以进行链式操作。

以上就是 ES6 的 Promise 的基本使用演示。看完你可能会觉得,这跟之前讲述 jquery 的不差不多吗 ———— 对了,这就是我要在之前先讲 jquery 的原因,让你感觉一篇一篇看起来如丝般顺滑!

接下来,将详细说一下 ES6 Promise 的一些比较常见的用法,敬请期待吧!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文