程序员Web前端之路让前端飞

javascript 异步编程

2019-05-24  本文已影响25人  zidea
并发

异步编程和函数式自定义组件

关于在前端开发过程中遇到有关

目录

1.1 在 JavaScript 中并发和异步编程
1.2 函数式自定义组件

1. 在 JavaScript 中并发和异步编程

1.1 概述

在同一个阶段或时期可以进行多个任务处理,这些任务通常是耗时的,类似 IO 操作读取文件(nodejs)或是网络请求。


[图片上传中...(image-9a4d40-1558701480568)]

实现这样需求通常是两种方式

1.1.2 阻塞(同步)
1.1.2 非阻塞(异步)

当下几乎 JavaScript 引擎都是非阻塞/事件驱动的方式来实现高并发

1.1.3 可能阻塞情况

以下情况可能会会阻塞主线程

1.1.5 历史
1.1.6 几个方便对比这些回调的优点和缺点

场景:通过组织获取该组织下成员 id 集合,然后遍历成员(顺序) id 获取每一个成员的信息(并发)。

1.2 callback(回调函数)

1.2.1 优点
1.2.2 缺点
1.2.3 复杂度
const fs = require('fs');

fs.readFile('a.txt',(err,data)=>{
    if(err) return;
    console.log(data.toString());
})
promise

1.3 promise

promise 就是一个对象,在未来的时间执行内部的 resolve 方法,

 function fetchAvatarUrl(userId){

    return fetch(`https://catappapi.herokuapp.com/users/${userId}`)
        .then(response => response.json())
        .then(data => data.imageUrl)
}

1.5 iterator(迭代器)

只要对象实现了[Symbol.]

1.5.1 接口

在 OOP 编程思想中我们少不了接口概念,什么是接口,接口是一种契约是一种行为规范。接口和类概念在现代语言变得模糊。在 Typescript 和 class 接口可以相互替换和继承的。
接口可以可以看出一类具有相同行为,就是按事物的行为进行划分。所以接口也可以看做类型。

1.5.2 在 JavaScript 中接口的实现
1.5.3 什么是 Symobl

唯一性,

1.5.5 iterator 内部机制

[demo2.js)


pause-time.jpg

1.6 generator(生成器)

是一个特殊函数,与一般函数不同定义时候通常在 function 后面添加 * 来和普通函数进行区别,

1.7 async/wait

async 实际就是返回一个 promise


    // await 返回的是实际数据而不是 promise 如果不用 await
    const response = await fetch(`https://catappapi.herokuapp.com/users/${userId}`)
    response
    response.json();
}


图1

正常 fectch 返回一个 promise 对象。

图2

如果在 async 函数中在一个表达式添加一个 await 代码在函数中执行到此处会暂停等到异步表达式执行完毕后返回的是一个返回对象而非 promise 对象

图3

修改代码

上一篇 下一篇

猜你喜欢

热点阅读