美文网首页
async await

async await

作者: 瘾_95f1 | 来源:发表于2019-11-29 20:39 被阅读0次

面试题:

function fn1(cb) {
  setTimeout(() => {
    console.log("fn1");
    cb();
  }, 3000);
}
function fn2(cb) {
  setTimeout(() => {
    console.log("fn2");
    cb();
  }, 1000);
}
function fn3(cb) {
  setTimeout(() => {
    console.log("fn3");
    cb();
  }, 2000);
}

euque([fn1, fn2, fn3])//输出fn1,fn2,fn3

function euque(list) {
  //code

}

解答

function fn1(cb) {
  setTimeout(() => {
    console.log("fn1");
    cb();
  }, 3000);
}
function fn2(cb) {
  setTimeout(() => {
    console.log("fn2");
    cb();
  }, 1000);
}
function fn3(cb) {
  setTimeout(() => {
    console.log("fn3");
    cb();
  }, 2000);
}

euque([fn1, fn2, fn3])//输出fn1,fn2,fn3

function euque(list) {
 
 (async()=>{
 for(let i= 0;i<list.length;i++) {
  await new Promise((res,rej)=>{
            list[i](res)
        })
    }

})()
}

思考

此方法只可以用for 或者 while循环,其他的遍历方法不可以
拿forEach举例,其源码就是封装的while循环,所多一层。async await 起不到作用,

模拟forEach实现

let CustomForeach = async (arr, callback) => {
  const length = arr.length;
  const O = Object(arr);
  let k = 0;
  while (k < length) {
    if (k in O) {
      console.log('doing foreach...');
      const kValue = O[k];
      await callback(kValue, k, O);
    }
    k++;
  }
};

function fn1(cb) {
  setTimeout(() => {
    console.log("fn1");
    cb();
  }, 3000);
}
function fn2(cb) {
  setTimeout(() => {
    console.log("fn2");
    cb();
  }, 1000);
}
function fn3(cb) {
  setTimeout(() => {
    console.log("fn3");
    cb();
  }, 2000);
}

euque([fn1, fn2, fn3])//输出fn1,fn2,fn3

function euque(list) {
     (async()=>{
        CustomForeach(list,async(item) => {
            await new Promise((res,rej)=>{
                    item(res)
                })
            })
     })()
}

 fn1
doing foreach...
 fn2
 doing foreach...
 fn3

相关文章

  • async和await

    浅谈Async/Await用 async/await 来处理异步 async和await async:声明一个异步...

  • ES8(一) —— async&await

    目录 async和普通函数的区别 await async/await处理多回调异步 async和await必须配合...

  • async

    async/await特点 async/await更加语义化,async是“异步”的简写,async functi...

  • ES6中的好东西

    1 Await/Async 前端的回调时代我没有赶上,我赶上的是await/async时代。await和async...

  • Vue接口调用方式(三)async/await用法

    async/await用法 1. async/await的基本用法 async/await是ES7引入的新语法,可...

  • nodejs async 使用简介

    async await node async 使用

  • JS 中的 async/await

    async/await 是什么? async/await 是 ES2017 中新增的异步解决方案; await 只...

  • ES2017 async 函数

    async 和 await 在干什么 每个名称都有意义async : 异步await: async wait简...

  • async/await

    async/await async/await 是Generator的语法糖。 Generator 通过将Gene...

  • 小程序-云开发

    async和await async:异步(无等待)await:等待(是为了同步) 一、await 关键字只在 as...

网友评论

      本文标题:async await

      本文链接:https://www.haomeiwen.com/subject/cfbgwctx.html