zoukankan      html  css  js  c++  java
  • uni-app 项目记录

    await
    等候,等待;期待

    什么是async、await
    await 用于等待异步完成
    通常async、await都是跟随Promise一起使用的

    async返回的都是一个Promise对象同时async适用于任何类型的函数上。这样await得到的就是一个Promise对象

    async function testSync() {
        const response = await new Promise(resolve => {
            setTimeout(() => {
                resolve("async await test...");
             }, 1000);
        });
        console.log(response);
    }
    testSync();//async await test...
    
    async function asyncAwaitFn(str) {
       return await new Promise((resolve, reject) => {
           setTimeout(() => {
               resolve(str)
           }, 1000);
       })
    }
    
    const serialFn = async () => { //串行执行
    
       console.time('serialFn')
       console.log(await asyncAwaitFn('string 1'));
       console.log(await asyncAwaitFn('string 2'));
       console.timeEnd('serialFn')
    }
    
    serialFn();
    
    async function asyncAwaitFn(str) {
       return await new Promise((resolve, reject) => {
           setTimeout(() => {
               resolve(str)
           }, 1000);
       })
    }
    const parallel = async () => { //并行执行
       console.time('parallel')
       const parallelOne = asyncAwaitFn('string 1');
       const parallelTwo = asyncAwaitFn('string 2')
    
       //直接打印
       console.log(await parallelOne)
       console.log(await parallelTwo)
    
       console.timeEnd('parallel')
    
    
    }
    parallel()
    

    await 操作符用于等待一个Promise 对象。它只能在异步函数 async function 中使用。
    表达式
    一个 Promise 对象或者任何要等待的值。
    返回值
    返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。

    await 表达式会暂停当前 async function 的执行,等待 Promise 处理完成。若 Promise 正常处理(fulfilled),其回调的resolve函数参数作为 await 表达式的值,继续执行 async function。

    若 Promise 处理异常(rejected),await 表达式会把 Promise 的异常原因抛出。

    另外,如果 await 操作符后的表达式的值不是一个 Promise,则返回该值本身。

    function resolveAfter2Seconds(x) {
     return new Promise(resolve => {
       setTimeout(() => {
         resolve(x);
       }, 2000);
     });
    }
    
    async function f1() {
     var x = await resolveAfter2Seconds(10);
     console.log(x); // 10
    }
    f1();
    
    async function f2() {
     var y = await 20;
     console.log(y); // 20
    }
    f2();
    
    async function f3() {
     try {
       var z = await Promise.reject(30);
     } catch (e) {
       console.log(e); // 30
     }
    }
    f3();
    

    setTimeout,Promise,async/await的区别?
    file

    file
    file

    async/await
    file

    async/ await来发送异步请求,从服务端获取数据

    async的用法
    它作为一个关键字放到函数前面,用于表示函数是一个异步函数

    async function timeout() {
      return 'hello world';
    }
    
    async function timeout() {
       return 'hello world'
    }
    timeout();
    console.log('虽然在后面,但是我先执行');
    

    file

    async function timeout() {
       return 'hello world'
    }
    timeout().then(result => {
       console.log(result);
    })
    console.log('虽然在后面,但是我先执行');
    

    file

    控制台中的Promise 有一个resolved,这是async 函数内部的实现原理。

    返回一个值
    当调用该函数时,内部会调用Promise.solve() 方法把它转化成一个promise 对象作为返回

    函数内部抛出错误
    就会调用Promise.reject() 返回一个promise 对象

    async function timeout(flag) {
       if (flag) {
           return 'hello world'
       } else {
           throw 'my god, failure'
       }
    }
    console.log(timeout(true))  // 调用Promise.resolve() 返回promise 对象。
    console.log(timeout(false)); // 调用Promise.reject() 返回promise 对象。
    

    file

    如果函数内部抛出错误, promise 对象有一个catch 方法进行捕获。

    timeout(false).catch(err => {
       console.log(err)
    })
    

    await是等待的意思
    它后面跟着什么呢?

    注意await 关键字只能放到async 函数里面

    更多的是放一个返回promise 对象的表达式

    // 2s 之后返回双倍的值
    function doubleAfter2seconds(num) {
       return new Promise((resolve, reject) => {
           setTimeout(() => {
               resolve(2 * num)
           }, 2000);
       } )
    }
    
    async function testResult() {
       let result = await doubleAfter2seconds(30);
       console.log(result);
    }
    

    file
    file
    file

    const express = require('express');
    const app = express();// express.static 提供静态文件,就是html, css, js 文件
    app.use(express.static('public'));
    
    app.listen(3000, () => {
       console.log('server start');
    })
    

    file

    file

    file

    file


    若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。


    请点赞!因为你们的赞同/鼓励是我写作的最大动力!

    欢迎关注达达的简书!

    这是一个有质量,有态度的博客

    博客

  • 相关阅读:
    【原创】python中文编码问题:控制窗口能输出中文,到文本文件里乱码
    【转载】在notepad++中直接运行python代码
    报错The reference to entity "characterEncoding" must end with the ';' delimiter
    原码, 反码, 补码 详解
    GC 过程图解
    Java NIO:浅析I/O模型
    Java类加载器的工作原理
    修改classloader的加载路径
    ThreadLocal 源码分析
    冒泡排序、快速排序、堆排序
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11688589.html
Copyright © 2011-2022 走看看