Fork me on GitHub

李可

导航

统计

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

posted on   李可在江湖  阅读(337)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示