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

  • 相关阅读:
    Android系统启动过程分析
    android的logcat 用法整理
    git 使用详解(10) 远程分支
    android的logcat 用法整理
    android Binder工作流程
    android Binder工作流程
    git log 小结
    linux patch 命令小结
    windows 中 \r\n 区别于 类unix中的\n 疑问 迎刃而解
    Mysql Error Code : 1436 Thread stack overrun
  • 原文地址:https://www.cnblogs.com/leee/p/7096119.html
Copyright © 2011-2022 走看看