下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 16 | 异步:异步编程之Promise
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

Node.js开发实战

共57讲 · 约600分钟
3753
免费
01 | 课程介绍
免费
02 | 内容综述
免费
03 | Node.js是什么?
免费
04 | Node.js可以用来做什么?
免费
05 | 课程实战项目介绍
06 | 什么是技术预研?
07 | Node.js开发环境安装
08 | 第一个Node.js程序:石头...
09 | 模块:CommonJS规范
10 | 模块:使用模块规范改造石...
11 | 模块:npm
12 | 模块:Node.js内置模块
13 | 异步:非阻塞I/O
14 | 异步:异步编程之callback
15 | 异步:事件循环
16 | 异步:异步编程之Promise
17 | 异步:异步编程之async/...
18 | HTTP:什么是HTTP服务器?
19 | HTTP:简单实现一个HTTP服...
20 | HTTP:实现网页版石头剪刀...
21 | HTTP:用express优化石头...
22 | HTTP:用koa优化石头剪刀...
23 | RPC 调用:什么是RPC调用...
24 | RPC调用:Node.js Buffe...
25 | RPC 调用:Node.js net...
26 | 项目启动:整体需求分析
27 | 项目启动:极客时间App下...
28 | 课程详情页:极客时间详情...
29 | 课程详情页:将ES6模版字...
30 | 课程详情页:极客时间详情...
31 | 课程播放页:极客时间播放...
32 | 课程播放页:GraphQL API...
33 | 课程播放页:极客时间播放...
34 | 课程列表页:极客时间列表...
35 | 课程列表页:用 Vue/Rea...
36 | 课程列表页:极客时间列表...
37 | 性能工具:HTTP服务的性能...
38 | 性能工具:Node.js性能分...
39 | 代码优化:JavaScript代码...
40 | 代码优化:内存管理优化
41 | 代码优化:Node.js C+...
42 | 多进程优化:Node.js子进...
43 | 多进程优化:Node.js cl...
44 | 多进程优化:进程守护与管...
45 | 架构优化:动静分离
46 | 架构优化:反向代理与缓存...
47 | 概念:框架设计和工程化
48 | 概念:设计模式
49 | 概念:Serverless
50 | 服务端框架搭建:koaless
51 | 服务端框架搭建:屏蔽请求...
52 | 服务端框架搭建:完成服务...
53 | 云函数式工程实现:服务端...
54 | 云函数式工程实现:工具端...
55 | 加餐:调试 Node.js 源...
56 | 结束语
57 | 彩蛋:这是一个严肃的课程
本节摘要

精选留言(11)

  • 2019-10-10
    老师讲的很好 不枯燥啊

    作者回复: 谢谢,录这段的时候已经有点困了

    3
  • 2019-12-02
    老师我想请教下,Promise.all 处理多个错误,视频中说得存下所有变量后处理具体是怎样呢,是在catch中再一个个catch吗?

    作者回复: const result = {};
    let error = null;
    Promise.all([
        promiseA.then(res=> {
            result['A'] = res; return res;
        }).catch(e=> {
            error = e;
        }),
        promiseB.then(res=> {
            result['B'] = res; return res;
        }).catch(e=> {
            error = e;
        })
    ]).then(()=> { xxx })

    像这样写,所有的Promise就会在自己resolve之后把数据存在result里,然后所有的Promise在出错时也会把错误存起来,并且转到resolved状态

    这样子,程序的逻辑就是Promise.all会等待所有的Promise执行完成,并且可以拿到所有Promise各自的结果。而不是“有任意Promise失败就回调。”

    1
  • 2019-11-03
    (function () {
            var promise = new Promise(
                function (resolve, reject) {
                    setTimeout(() => {
                       reject(new Error('3'))//改成这样比较好throw new Error('3')
                    }, 1000)
                }
            ).then((resolve) => {
                console.log(resolve)
            }, (reject) => {
                console.log('reject', reject)
            }).catch((err) => {
                console.log(err)
            })
        })()
    上面的 reject(new Error('3')) 改成这样 throw new Error('3') 应该更好说明『任何任何一个rejected状态且后面没有.catch的Promise,都会造成浏览器/Node环境的全局错误』,不然没有catch,在then中照样可以捕获reject中的异常。
    展开

    作者回复: 你提醒我了,then还可以传第二个参数,作用和catch一样。我习惯了then只传一个参数的情况,直接给忘了。

    但是你这样抛错误,promise应该是不会进rejected状态的

    1
    1
  • 2019-10-22
    老师,所以promise.then能根据return和Error判断第二次返回的的promise的状态,这个特点有什么用么

    作者回复: 有时候一个异步流程是由很多个子异步流程组合起来的。比如求职这个例子里整个求职过程是由三次面试组成的。

    这时候你整个求职过程的成功和失败就取决于每一次的成功和失败。而不只是第一个promise

    2
    1
  • 2019-10-12
    老师,视频教程还是偏基础是么?因为很多nodejs的内容经常看到,也是基础的内容,接触过node多少已经掌握了一些了,不知道实战会不会又更加硬核的东西~~~😁😁

    作者回复: 计划就是第二章面向初学者。后面会难的

    1
  • 2019-11-05
    听到老师说困了,我就一下子笑了,大早上的我也是听困了,不过不是老师讲的不好哦,嘿嘿,谢谢,比之前更明了promise的用法了,之前每次用的时候都得纠结好久,试错好几次,,,

    作者回复: 通宵录课容易么

  • 2019-11-03
    『任何一个rejected状态且后面没有.catch的Promise,都会造成浏览器/Node环境的全局错误』
    应该是都有可能会造成全局错误吧???
  • 2019-10-23
    学到了,promise是个渣男!!!以后跟别人解释知道怎么说了。

    作者回复: 也有可能遇到promise了就一定resolve的好男人的(抠鼻)

  • 2019-10-14
    一直在用,还是知道怎么回事好些,给赞
  • 2019-10-14
    🤓 面试的例子很形象,可算知道怎么使用promise了!
  • 2019-10-14
    思路清晰、声音好听,老师加油
    ‘promise不只是渣男,还是状态机’瞬间让这节课有趣了起来
    1