黑马程序员技术交流社区
标题: 【郑州校区】前端22期2月8日node.js 提问区问题汇总 [打印本页]
作者: 我是楠楠 时间: 2020-3-11 16:34
标题: 【郑州校区】前端22期2月8日node.js 提问区问题汇总
【郑州校区】前端22期2月8日node.js 提问区问题汇总
1. 关于async:
l async函数会返回一个Promise对象——如果在函数中return一个直接量,async会把这个直接量通过Promise.resolve() 封装成 Promise 对象;
l await只能在async函数内部使用——await是个运算符,用于组成表达式,await表达式的运算结果取决于它等的东西,如果它等到的不是一个Promise对象,那么await表达式的运算结果就是它等到的东西;如果它等到的是一个Promise对象,await就会阻塞其后面的代码,等着Promise对象resolve,然后得到resolve的值,作为await表达式的运算结果;虽然是阻塞,但async函数调用并不会造成阻塞,它内部所有的阻塞都被封装在一个Promise对象中异步执行,这也正是await必须用在async函数中的原因;
l async 处理异步的原理:
① async 函数遇到await操作符会挂起;
② await后面的表达式求值(通常是个耗时的异步操作)前 async 函数一直处于挂起状态,避免阻塞 async 函数后面的代码;
③ await后面的表达式求值后(异步操作完成),await可以对该值做处理:如果是非 promise,直接返回该值;如果是 promsie,则提取 promise 的值并返回。同时告诉 async 函数接着执行下面的代码;
④ 哪里出现异常,结束 async 函数。
v await后面的那个异步操作,往往是返回 promise 对象(比如 axios),然后交给 await 处理,毕竟,async-await 的设计初衷就是为了解决异步请求数据时的回调地狱问题,而使用 promise 是关键一步。 2. 查找文档的时候必须先创建集合规则吗? 集合规则里面是不是还要写上查找文档的字段?
答:是的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |