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

  • 相关阅读:
    快过年了,博客园里的文章也变少了
    IP格式检查、IP INT 转换
    ip地址与数字相互转换的sql函数 [ZT]
    SQL Server 2005 TSQL的增強功能 [ZT]
    清除某个数据库的所有数据库连接的存储过程 [ZT]
    C# 3.0新特性
    C#中的委托和事件 [ZT]
    C# 各种进制之间相互转换 [ZT]
    升级到Visual Studio 2008的10个技巧[转]
    ASP.NET备份恢复SqlServer数据库 [ZT]
  • 原文地址:https://www.cnblogs.com/leee/p/7096119.html
Copyright © 2011-2022 走看看