zoukankan      html  css  js  c++  java
  • async generator promise异步方案实际运用

    es7 async方案

    
    /******************async***********************/
    var timeFn=function(time){
    	return new Promise(function(resolve,reject){
    		setTimeout(function(){
    			console.log(2)
                resolve(3);
    		},time)
    	})	
    }
    
    
    var asyncFn=async function (){
    	console.log(1)
    	var parm=await timeFn(5000);
    	console.log(parm)
    	console.log(4)
    }
    asyncFn()
    

    generator方案

    /******************generator***********************/
    var timeFn=function(time){
    	return new Promise(function(resolve,reject){
    		setTimeout(function(){
    			console.log(2)
                resolve(3);
    		},time)
    	})	
    }
    
    
    var genFn=function * (){
    	console.log(1)
    	var parm=yield timeFn(5000);
    	console.log(parm)
    	console.log(4)
    }
    asyncFn()
    

    promise方案

    /******************promise***********************/
    var timeFn=function(time){
    	return new Promise(function(resolve,reject){
    		setTimeout(function(){
    			console.log(2)
                resolve(3);
    		},time)
    	})	
    }
    
    
    
    console.log(1)
    timeFn(5000).then(function(parm){
    	console.log(parm)
    	console.log(4)
    })
    

    产品的需求

    工作中的异步实用场景

    ended 是音频播放完毕事件 btnText 是按钮文案

    使用knockout库

            self.timer = ko.observable(3);
            self.focusChoice.subscribe((newVal)=>{
                if (newVal == '单词') {
                    self.timer(3)
                } else {
                    self.timer(5)
                }
            })
            self.btnText = ko.observable(`提交`)
            self.disabled = ko.observable(false);
            self.ended = async ()=> {
                console.log(1)
                self.btnText(`${self.timer()}秒后可以提交`)
                console.log(2)
                await self.promiseTime();
                console.log(3)
                self.btnText('提交')
                console.log(4)
            }
            
            self.promiseTime = ()=> {
                return new Promise((resolve)=> {
                    setTimeout(() => {
                        self.disabled(true);
                        resolve();
                    }, self.timer() * 1000)
                })
            }
               
    

    gif

  • 相关阅读:
    IndexOf、IndexOfAny 、Remove
    静态类、静态方法的使用
    面向对象 字段、方法、属性
    break、continue、return
    冒泡排序
    方法练习
    Oracle-查看oracle是否有表被锁
    教程-键盘扫描码
    网卡远程唤醒-远程开机再配合远程控制
    远程控制篇:在DELPHI程序中拨号上网
  • 原文地址:https://www.cnblogs.com/leee/p/7096119.html
Copyright © 2011-2022 走看看