promise 存到变量中为什么可以防止阻塞?

siwadiyapromise 存到变量中为什么可以防止阻塞?


为什么将 promise 存到变量中,这三个 promise 就会同时运行,而不是阻塞后面代码的运行

abelmakihara:因为是 await 阻塞在那的
第二个例子是执行完了再一起拿结果的

noe132:因为第一个例子等同于
const timeoutPromise1 = timeoutPromise(3000)
await timeoutPromise1
const timeoutPromise2 = timeoutPromise(3000)
await timeoutPromise2
const timeoutPromise3 = timeoutPromise(3000)
await timeoutPromise3

而第二个例子因为都是等待 3 秒,所以 await timeoutPromise1 时第二个和第三个的时间也到了。
你试试 如果时间不一样会怎么样

const timeoutPromise1 = timeoutPromise(3000)
const timeoutPromise2 = timeoutPromise(4000)
const timeoutPromise3 = timeoutPromise(5000)
await timeoutPromise1
print('promise 1 done')
await timeoutPromise2
print('promise 2 done')
await timeoutPromise3
print('promise 3 done')

Curtion:上面的例子中第一个 timeoutPromise 在 resolve 后才会继续注册第二个 timeoutPromise 微任务;而第二个例子在当前 Event Loop 中就一次性注册了三个微任务。

wxsm:#2 说得很好了。

siwadiya:@abelmakihara 可以这么理解吗: 这三个 promise 是同步运行的,后面的 await 是为了将 pending 更改为 fulfilled

abelmakihara:@siwadiya 当然不是了 是 await 在等待着状态变更的返回结果 因果反了
他们都是'同步'运行了 3s
所以 await 拿结果的时候非常快
不然像#2 的那样
await timeoutPromise2/3 的时候还是需要再各等待 1s 的

怎么编写一个同时支持 callback 和 promise 风格的函数

youmoo:假设给出如下代码模板: // 一个异步函数 function someFun(callback) {} // 可以传 callback 执行 someFun(console.log); // 可以返回 Promise someFun().then(console.log); someFun函数要如何编写才能支持 2 种调用风格呢? 我写了篇文章…

小程序云数据库是传值还是传址

lithium148:const promise =db.collection('todo').get() 请问 get()获取到的是表的值还是表的引用,是把表的值复制一遍还是只传递了地址? 谢谢!

一键拷贝常用动画效果 CSS 代码

jeffjade:CSSFX,一个 CSS 动效相关的网站: https://cssfx.lovejade.cn/ 。她集合 Web 开发中常用的动画效果,如鼠标悬停、输入框获取焦点、加载、以及其他动画;不仅有展示效果,并提供一键拷贝至剪切板,以便您可以在自己的项目中使用。 备注:这个项目是基于 GitHub 的一个项目( CSSFX ?) fork 而来,…

我想问下,一般大型的数据库,你们公司都有文档吗?

galileo1214:接手一个没文档的库,太难了kop1989:数据结构设计不管大型不大型,肯定要有文档的。否则整个数据库的字段和逻辑就是黑盒。不可能为了反推数据库表结构的意义去爬代码,效率太低而且正确性不能保证。 galileo1214:@kop1989 一天 2000w 的数据,没文档,心累

高强度思考、码完代码后,如何放松大脑?

ymz:一上午的高强度用脑,午休后,感觉大脑没恢复到平常水平。netnr:个人认为最好的方式就是运动 ymz:@netnr 中午休息时候出去?‍,没场地 victor:吃甜品。出去买东西顺便散散步。起来刷杯子倒水活动。出去跟同事抽烟顺便吹牛。 dethan:睡觉啊兄弟