美文网首页
js中的promise

js中的promise

作者: 小溪流jun | 来源:发表于2021-09-14 08:59 被阅读0次
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /*
        +++promise对象代表异步操作
            ---pending(进行中)
            ---fulfilled(已成功)
            ---rejected(已失败)
            只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态
            ES6 规定,Promise对象是一个构造函数
            resolved 的 Promise 是在本轮事件循环的末尾执行,总是晚于本轮循环的同步任务。

     */
    //promise构造函数接受一个函数作为参数
    // const promise = new Promise(function (resolve, reject) {
    //  resolve("成功");
    // });

    // //可以利用.then方法
    // promise.then(function (value) {
    //  // success
    //  //pending==>fulfilled
    //  console.log(value)
    // }, function (error) {
    //  // failure
    //  //pending==>rejected
    //  console.log(error)
    // });


    // const myPromise = new Promise((resolve, rejected) => {
    //  setTimeout(() => {
    //      resolve("hellow")
    //  }, 2000)
    // }).then((val) => {
    //  console.log(val)
    //  return new Promise((resolve, rejected) => {
    //      setTimeout(() => {
    //          resolve("world")
    //      }, 2000)
    //  })
    // }).then(val => {
    //  console.log(val)
    // })

    // const myPromise2 = new Promise((resolve, rejected) => {
    //  setTimeout(() => {
    //      resolve("成功1")
    //      console.log("11111111111")
    //  }, 2000)
    // }).then(res => {
    //  return new Promise((resolve, rejected) => {
    //      setTimeout(() => {
    //          resolve("成功2")
    //          console.log("222222222222")
    //      }, 2000)
    //  }).then(res => {
    //      console.log("33333333333")
    //      return res
    //  })
    // }).then(res => {
    //  console.log(res)
    // })

    // const myPromise3 = new Promise((resolve, rejected) => {
    //  setTimeout(() => {
    //      resolve("成功")
    //      console.log("111111111111111")
    //  }, 2000)
    // }).then(res => {
    //  return new Promise((resolve, rejected) => {
    //      console.log("222222222", res)
    //      resolve(res)
    //  })
    // }).then(res => {
    //  console.log("33333333333", res)
    //  return res
    // }).then(res => {
    //  console.log("4444444444", res)
    //  return res
    // })

    // const myPromise4 = new Promise((resolve, rejected) => {
    //  setTimeout(() => {
    //      // resolve("成功")
    //      rejected("失败")
    //  }, 2000)
    // }).then(res => {
    //  console.log(res)
    // }, err => {
    //  console.log(err)
    // })
    // .catch(err => {
    //  console.log(err)
    // })

    // const myPromise5 = new Promise((resolve, rejected) => {
    //  setTimeout(() => {
    //      resolve("成功")
    //  }, 2000)
    // }).then(res => {
    //  console.log("11111111111", res)
    //  throw new Error('错误信息')
    // }).catch(err => {
    //  console.log("2222222222", err)
    // }).then(res => {
    //  console.log("33333333333", res)
    // }).then(res => {
    //  console.log("44444444444", res)
    // }).catch(err => {
    //  console.log("55555555", err)
    // })
    // 结论:catch也会返回一个promise实例,并且是resolved状态

    // Promise.all() 批量执行
    //切菜
    function cutUp() {
        console.log('开始切菜。');
        var p = new Promise(function (resolve, reject) {        //做一些异步操作
            setTimeout(function () {
                console.log('切菜完毕!');
                resolve('切好的菜');
            }, 1000);
        });
        return p;
    }

    //烧水
    function boil() {
        console.log('开始烧水。');
        var p = new Promise(function (resolve, reject) {        //做一些异步操作
            setTimeout(function () {
                console.log('烧水完毕!');
                reject('烧好的水');
            }, 1000);
        });
        return p;
    }

    Promise.all([cutUp(), boil()])
        .then((result) => {
            console.log('准备工作完毕');
            console.log(result);
        }, err => {
            console.log("11111111111", err)
        })











    /*
        异步操作的常见操作
            1、事件监听
            2、ajax操作
    */

    //1、事件监听
    document.getElementById('#start').addEventListener('click', start, false);
    function start() {
        // 响应事件,进行相应的操作
    }
    // jquery on 监听
    $('#start').on('click', start)

    //2、 比较常见的有ajax
    $.ajax('http://www.wyunfei.com/', {
        success(res) {
            // 这里可以监听res返回的数据做回调逻辑的处理
        }
    })
    // 或者在页面加载完毕后回调
    $(function () {
        // 页面结构加载完成,做回调逻辑处理
    })
</script>

</html>

相关文章

  • js-Promise基础

    js-Promise基础(第三周) Promise含义 promise意思为允诺、许诺、承诺在js中为了解决编写代...

  • ES6 promise理解

    一、promise 是什么 1、Promise 是 JS 中解决异步编程的一种方案。 拓展:js中解决异步编程的...

  • 深入了解下Promise

    Promise 意义 Promise 的诞生与 Javascript 中异步编程息息相关,js 中异步编程主要指 ...

  • js 中的Promise

    特点 1.对象的状态不受外界影响。2.一旦状态改变,就不会再变,任何时候都可以得到这个结果。3.无法取消Promi...

  • js中的promise

    Promise 是 JavaScript 语言提供的一种标准化的异步管理方式,它的总体思想是,需要进行的IO,等待...

  • js中的promise

  • js中的promise

    概念 promise是异步编程的一种解决方案,它是一个对象,它可以获取异步操作的信息。 有三种状态:pending...

  • OC如何实现Promise

    JS中Promise和Ramda中的curry化函数,真的很好用。我就在想: 如何在OC中实现Promise 如何...

  • js实现“锁”

    在js中需要让某些异步的任务按顺序执行的时候可以Promise.then(Promise).then..... 但...

  • 手写Promise

    基本实现new Promise 和 then /catch方法 Promise.js test.js测试 调用手...

网友评论

      本文标题:js中的promise

      本文链接:https://www.haomeiwen.com/subject/chtcgltx.html