美文网首页
Promise/Gennerator/async&await解决

Promise/Gennerator/async&await解决

作者: 东方三篇 | 来源:发表于2021-09-10 11:28 被阅读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">
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <title>Document</title>
</head>
<body>
    <div id='dog' style="width: 400px; height: 400px; background-size: 100%;"></div>
    <script>
        const box = document.getElementById('dog')
        const url = 'https://dog.ceo/api/breeds/image/random' // 获取狗狗图片的开放api
        const {log} = window.console
        /* 定义一个常规的 ajax promise */
        const Get = () => {
            return new Promise((resolve, reject) => {
                const data = axios.get(url) // ajax获取狗狗图片
                data ? resolve(data) : reject(new Error('获取失败!'))
            })
        }

        /* promise then方法来获取 ajax 的response */
        /* Get().then(res => {
            log(res)
            box.style.backgroundImage = `url(${res.data.message})`
        }).catch(err => log(err)) */

        /* 使用 Generator 函数解决 ajax */
        /* const Gen = function * () {
            const res =  yield axios.get(url) // axios返回的是promise所以可以是用then方法
            return res
        } */
        /* const Gen = function * () {
            const res = yield Get() // 返回值p是promise所以可以then
            return res
        } */
        /* const hw = Gen()
        const result = hw.next()
        console.log('result', result) // result {value: Promise, done: false}
        result.value.then(res => { // axios返回的是promise所以可以是用then方法
            console.log('res', res)
            box.style.backgroundImage = `url(${res.data.message})`
        }).catch(err => log(err)) */

        /* 使用 async await 解决 ajax */
        const AsyncGet = async () => {
            const res = await Get() // Get 返回 promise
            log('res', res) // await 执行 完成,才执行下面一行
            box.style.backgroundImage = `url(${res.data.message})`
        }
        AsyncGet()
        console.log('end')
    </script>
</body>
</html>

相关文章

  • Promise/Gennerator/async&await解决

  • Promise + Async&Await + Array.re

    背景 试想在一个需要频繁更新数据的场景(例如:监控、图表类),常规方法是设置一个间隔 N 秒的定时器 setInt...

  • Promise 完全解读

    目录 一. Promise 简介Promise 是什么?我们为什么需要 Promise?Promise 能解决什么...

  • gennerator 函数

    模拟异步变同步

  • ES6--Promise

    Promise解决异步回调的问题 Promise.all和Promise.race

  • Promise之我见

    Promise之我见 1、Promise的含义 Promise是异步编程的一种解决方案,用来解决函数的嵌套,也就是...

  • Promise

    什么是Promise Promise解决了什么问题 Promise/A+规范 Promise的原理(如何实现链式调...

  • Promise 对象

    Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...

  • Javascript: Promise 学习笔记(1)

    什么是 Promise ? Promise 解决了什么问题? 语法 一、什么是 Promise ? A Promi...

  • 2020-08-15 Promise

    1.promise Promise为何出现? 为了解决callback Hell Promise的状态 promi...

网友评论

      本文标题:Promise/Gennerator/async&await解决

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