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

async generator promise异步方案实际运用的更多相关文章
- 【ES6】Generator+Promise异步编程
一.概念 首先我们要理解Generator和Promise的概念. Generator:意思是生成器,可以在函数内部通过yeild来控制语句的执行或暂停状态. *Foo(){ yeild consol ...
- async和await对promise异步方案的改进,以及使用注意事项
async.await相比原生promise的有优势: 1.更加简洁,await一个promise即可,那么会自动返回这个promise的resolve值,无需在then函数的回调中手动取值,彻底解决 ...
- 异步编程的上下文与操作符--await/async generator/yield
上下文的保存机制: 1.保存到异步类型中:promise & future & closure & observable: 2.栈帧保存:其它保存机制: 3.保存到服务提供方的 ...
- Generator函数异步应用
转载请注明出处: Generator函数异步应用 上一篇文章详细的介绍了Generator函数的语法,这篇文章来说一下如何使用Generator函数来实现异步编程. 或许用Generator函数来实现 ...
- [.NET] 利用 async & await 进行异步 IO 操作
利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html 序 上次,博主 ...
- 【JavaScript】 使用Async 和 Promise 完美解决回调地狱
很久以前就学习过Async和Promise,但总是一知半解的. 今天在写NodeJS的时候,发现好多第三方库使用回调,这样在实际操作中会出现多重回调,这就是传说中的JS回调地狱. 举个例子 有一个方法 ...
- 理解koa2 之 async + await + promise
koa是下一代的Node.js web框架. 我们首先使用koa来实现一个简单的hello world吧!假如目前的项目结构如下: ### 目录结构如下: koa-demo1 # 工程名 | |--- ...
- async+await处理异步问题
在编写网页的时候我们常常会遇到异步问题,async+await是es6提出的解决异步的方法,下面我们来看看这个方法怎么实现解决异步的, 大家都知道,setTimeout是一个定时器.他是一个异步执行的 ...
- async await promise 执行时序
先用一个例子来说明async await promise的执行顺序 console.log('start'); async function test(){ console.log('111'); a ...
随机推荐
- SpringCloud入门1-服务注册与发现(Eureka)
前言 Oracle转让Java,各种动态语言的曝光率上升,Java工程师的未来在哪里?我觉得Spring Cloud让未来有无限可能.拖了半年之久的Spring Cloud学习就从今天开始了.中文教材 ...
- Spark第一个应用程序
首先要对源码进行编译,生成对应hadoop版本的spark开发程序jar包,上篇已经写了具体的过程,这里不再赘述. 在安装spark的机器上,下载eclipse-java-x86_64版本,将spar ...
- Tomcat启动过程源码解读
根据Tomcat源码来看一下Tomcat启动过程都做了什么 部分代码为主要流程代码,删去了try-catch以及一些校验逻辑,方便理解主流程 先来一张启动过程时序图,了解一下启动顺序 Tomcat启动 ...
- Bootloader Project
Bootloader Project From OMAPpedia Jump to: navigation, search Contents [hide] 1 OMAP Bootloader Over ...
- HI3531网络tftp、nfs加载
ifconfig eth0 hw ether 00:00:23:34:45:66; ifconfig eth0 192.168.1.10 netmask 255.255.255.0; route a ...
- 用css以写代码形式画一个皮卡丘
我的个人网站是通过写代码的形式来形成一个网站的,前一阵子在某个大神的github上看到他用写代码的形式来完成一个皮卡丘,于是心血来潮花了半个小时,也完成了一个作品. 这其中涉及到的知识点也不是很复杂, ...
- SharedPreferences实现保存用户名功能
1. 简介 SharedPreferences是一种轻型的数据存储方式,通过key-value键值对的方式将数据存储在xml文件中,常用于存储简单的配置信息. 2. 使用方式 2.1 获取Shar ...
- 洛谷P3434 [POI2006]KRA-The Disks(线段树)
洛谷题目传送门 \(O(n)\)的正解算法对我这个小蒟蒻真的还有点思维难度.洛谷题解里都讲得很好. 考试的时候一看到300000就直接去想各种带log的做法了,反正不怕T...... 我永远只会有最直 ...
- 【CJOJ P2226】[省常中2011S4] 圣诞节
Description 圣诞节到了,FireDancer准备做一棵大圣诞树.下图为圣诞树的一个简单结构. 这棵树被表示成一组被编号的结点和一些边的集合.结点从1到n编号.树的根永远是1.每个结点都有一 ...
- 递归方法,查询出树该组织及以下组织的组织ID
-- 查询出该组织下所有组织id的集合 --方法一: public String getAllOrgidsTwo(Integer orgid){ List<Integer> orgids= ...