老莫的笔记本  
  
查看: 1299|回复: 3

KOA 异步处理

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2018-4-24 23:57:32 | 显示全部楼层 |阅读模式
本帖最后由 周大胖子 于 2018-4-24 23:59 编辑

async : 让方法变成异步;await : 等待异步方法执行完成; (await只有在async的方法中才可以使用, 因为await 访问本身就会造成程序停止堵塞,所以只能在异步方法中使用。)
  1. function getData(){
  2. return 'zhangsan}
  3. async function testAsync(){
  4. return 'Hello async}
  5. async function test(){
  6. const v1=await getData();
  7. const v2=await testAsync();
  8. console.log(v1,v2);
  9. }
  10. test();
复制代码
async/await 同时使用
async 会将其后的函数(函数表达式或Lambda)的返回值封装成一个Promise 对象,而
await 会等待这个Promise 完成,并将其resolve 的结果返回出来。
  1. function findData() {
  2. return new Promise(resolve => {
  3. setTimeout(() => resolve("long_time_value"), 1000);
  4. });
  5. }
  6. async function test() {
  7. const v = await findData();
  8. console.log(v);
  9. }
  10. test();
复制代码

回复

使用道具 举报

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
 楼主| 发表于 2018-4-25 00:10:49 | 显示全部楼层
promise: 处理异步;  写法一
  1. //使用方法:  
  2. //resolve  执行成功的回调函数
  3. //reject 执行错误的回调函数
  4. var p=new Promise(function(resolve,reject){
  5.    setTimeout(()=>{
  6.       var name = 'zhangsan      resolve(name)
  7.    },1000)
  8. }
  9. p.then((data)=>{
  10.    console.log(data)   //后台打印出张三
  11. }
复制代码

回复

使用道具 举报

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
 楼主| 发表于 2018-4-25 00:15:23 | 显示全部楼层
Promise 处理异步函数 写法2
  1. function getData(resolve,reject){
  2.    //ajax
  3.    setTimeout(function(){
  4.       var name='张三'
  5.       resolve(name);
  6.    }1000,)
  7. }
  8. var p= new Promist(getData)   // 注意这里放的是方法名称 且没有括号()
  9. p.then((data)=>{
  10.    console.log(data);
  11. }
复制代码
回复

使用道具 举报

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
 楼主| 发表于 2018-4-25 15:35:43 | 显示全部楼层
promise是啥

Promise 对象 用于异步计算。 一个 Promise 对象 代表一个还未完成,但预期将会完成的操作。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表