zoukankan      html  css  js  c++  java
  • js----解决异步之Generator && async

    Generator-------生成器函数,解决异步:

    复制代码
    generator函数使用:
    1、分段执行,可以暂停
    
    2、可以控制阶段和每个阶段的返回值
    3、可以知道是否执行到结尾

    generator和异步控制:

    利用关键字yield,可以把异步操作写在yield语句里面,
    每调用一次next方法,则执行一次yield语句
    如果有return,return完成之后就退出了生成器函数,后面如果还有yield操作,则不再执行

    所以,Generator函数的一个重要实际意义就是用来处理异步操作,改写回调函数。
    复制代码
    复制代码
    function* g() {
        var o = 1;
        yield o++;
        yield o++;
    }
    var gen = g();
    
    console.log(gen.next()); //  Object {value: 1, done: false}
    
    var xxx = g();
    
    console.log(gen.next()); // Object {value: 2, done: false}
    console.log(xxx.next()); // Object {value: 1, done: false}
    console.log(gen.next()); // Object {value: undefined, done: true}
    复制代码

    async和异步:-------------通过await解决异步

    复制代码
    用法:
    
    async 表示这是一个async函数,await只能用在这个函数里面。
    
    await 表示在这里等待异步操作返回结果,再继续执行。
    
    await 后一般是一个promise对象
    
    示例:async用于定义一个异步函数,该函数返回一个Promise。
    如果async函数返回的是一个同步的值,这个值将被包装成一个理解resolve的Promise,等同于return Promise.resolve(value)。
    
    await用于一个异步操作之前,表示要“等待”这个异步操作的返回值。await也可以用于一个同步的值。
    复制代码
    复制代码
    let timer = async function timer(){
        return new Promise((resolve,reject) => {
            setTimeout(() => {
                resolve('500');
            },500);
        });
    }
    timer().then(result => {
      console.log(result);  //500
    }).catch(err => {
        console.log(err.message);
    });

    ------------------------------------------------------------------------------------------------------- //返回一个同步的值 let sayHi = async function sayHi(){ let hi = await 'hello world'; return hi; //等同于return Promise.resolve(hi); } sayHi().then(result => { console.log(result);//hello word });
    复制代码
  • 相关阅读:
    Linux上面执行 Windows 命令(比如 重启服务)的简单方法
    Linux 通过cksum 来判断文件是否是相同
    Linux 根据端口快速停止服务并启动的办法
    Delphi控件开发浅入深出(三)
    Delphi 资源文件( .res)
    C++中模块(Dll)对外暴露接口的方式
    delphi Align属性
    cport串口控件的应用
    两款工控控件对比评测:Iocomp和ProEssentials
    Android 将ARGB图片转换为灰度图
  • 原文地址:https://www.cnblogs.com/SRH151219/p/10399863.html
Copyright © 2011-2022 走看看