美文网首页
异步进化

异步进化

作者: yimi珊 | 来源:发表于2020-09-12 00:37 被阅读0次

例如:
获取用户数据;
再根据用户数据,获得订单数据;
再根据订单数据,获得商品数据;

setTimeout

//回调地狱
setTimeout(()=>{
  let users = '用户数据'
  console.log(users);
  setTimeout(() => {
    let orders = '订单数据'
    console.log(orders);
    setTimeout(() => {
        let goods = '商品数据'
        console.log(goods);
    }, 1000);
  }, 1000);
},1000);

生成器函数

function getUsers(){
  setTimeout(() => {
    let data = '用户数据';
    console.log(data);
    //调用next方法,并且将数据传入
    iterator.next(data);
  }, 1000);
}
function getOrders(){
  setTimeout(() => {
    let data = '订单数据';
    console.log(data);
    iterator.next(data);
  }, 1000);
}
function getGoods(){
  setTimeout(() => {
    let data = '商品数据';
    console.log(data);
    iterator.next(data);
  }, 1000);
}
//声明生成器函数
function * gen(){
  let users = yield getUsers();
  let orders = yield getOrders();
  let goods = yield getGoods();
}
//调用生成器函数
let iterator = gen();
iterator.next();

Promise对象

const p = new Promise((resolve,reject)=>{
    setTimeout(() => {
        let data = '用户数据';
        console.log(data);
        resolve(data);
    }, 1000);
});
p.then(value=>{
    return new Promise((resolve,reject)=>{
        setTimeout(() => {
            let data = '订单数据';
            console.log(data);
            resolve([value,data]);
        }, 1000);
    });
}).then(value=>{
    return new Promise((resolve,reject)=>{
        setTimeout(() => {
            let data = '商品数据';
            console.log(data);
            resolve([value,data]);
        }, 1000);
    });
});

Async...await

function getUsers(){
    return new Promise((resolve,reject)=>{
        setTimeout(() => {
            let data = '用户数据';
            // console.log(data)
            resolve(data);
        }, 1000);
    })
}
function getOrders(){
    return new Promise((resolve,reject)=>{
        setTimeout(() => {
            let data = '订单数据';
            resolve(data);
        }, 1000);
    })
}
function getGoods(){
    return new Promise((resolve,reject)=>{
        setTimeout(() => {
            let data = '商品数据';
            resolve(data);
        }, 1000);
    })
}
async function main(){
    let users = await getUsers();
    console.log(users);
    let orders = await getOrders();
    console.log(orders);
    let goods = await getGoods();
    console.log(goods);
}
main();

相关文章

  • 📒【异步】3. 异步方案之回调的不完美

    异步进化史 异步在实现上,依赖一些特殊的语法规则。从整体上来说,异步方案经历了如下的四个进化阶段: 回调函数 —>...

  • 异步进化

    例如:获取用户数据;再根据用户数据,获得订单数据;再根据订单数据,获得商品数据; setTimeout 生成器函数...

  • node异步进化

    刚入门自学node.js 时候,经常能看到所谓的"回调地狱",当时不理解,为什么要嵌套回调,后来写写代码明白了,是...

  • JavaScript 异步进化说

    原文链接:http://www.luckyjing.com/posts/js/async.html 本期的关键字为...

  • JavaScript 异步编程的进化

    前言 JavaScript 是一门单线程语言,即同一时间只能做一件事。但实际业务中,存在很多耗时的任务,如果按照同...

  • node 一些思考

    nodejs特点 单线程 异步处理 nodejs服务器模型 看下服务器模型进化史 石器时代 同步青铜时代 复...

  • 深入浅出异步编程体系(二)

    从0开始进化成Javascript 在上一篇文章中,我用了较大的篇幅来作为引子,从多线程讲到了异步。通过几个非常简...

  • 还在用RxBus&EventBus?你Out啦!哥哥教你

    首先我们来看消息总线的进化: 消息传递既可以用于Android四大组件之间的通信,也可用于异步线程和主线程之间的通...

  • 半理解系列--Promise的进化史

    半理解系列--Promise的进化史 学过js的都知道,程序有同步编程和异步编程之分,同步就好比流水线,一步一个脚...

  • JavaScript之异步概述

    1,异步(什么是异步,异步出现的原因,异步解决的问题,如何实现异步,什么时候需要异步模式。) JavaScript...

网友评论

      本文标题:异步进化

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