首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

了解关键区别:await vs return vs return await

} } 在这里,如果直接调用 foo,异步函数 foo 返回的 Promise 将始终undefined 表示,而无需等待函数 waitAndMaybeReject。...} } 在这里,如果调用 foo,返回的 Promise 总是会等待一秒,然后以 undefined 或以 "caught" 表示 fulfill。...'; } } 在这里,如果你调用 foo,返回的 Promise 将始终等待一秒,然后要么以 "yay" 表示 fulfill,要么以 Error('Boo!')...retrun await 的本质: • 一致的值:return await 可确保函数始终一致的返回 Promise 的解析值,即使在没有严格必要的情况下也是如此,从而确保返回数据类型的一致性。...'; } } 在这里,如果调用 foo,将始终等待一秒后返回 Promise,然后以 "yay" 或者以 "caught" 表示 fulfill。

23510

探索异步迭代器在 Node.js 中的使用

MongoDB 中的 cursor 本处以 Node.js 驱动 mongodb 模块来介绍,当我们调用 db.collection.find() 这个方法返回的是一个 cursor(游标),如果想要访问文档那么我们需要迭代这个游标对象来完成...myCursor.next())); MongoDB 异步迭代器实现源码分析 MongoDB 中游标是以 hasNext() 返回 false 或 next() 返回为 null 来判断是否达到游标尾部...幸运的是 MongoDB Node.js 驱动已经帮助我们实现了这一功能,通过一段源码来看在 MongoDB 中的实现。 find 方法 find 方法返回的是一个可迭代游标对象。...// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/cursor.js#L610 if (SUPPORTS.ASYNC_ITERATOR.../async/async_iterator').asyncIterator; } // https://github.com/mongodb/node-mongodb-native/blob/3.6/

7.5K20

聊聊JavaScript的Asynchronous

[async await啊] 需要异步 异步进程是需要时间来执行的进程。 它必须等到工作完成才能返回一些东西。...例如,函数 fetchData 为数据赋值(例如:从服务器获取数据)并,displayData 显示获取的数据: [示例方法] 当我们运行这个代码片段时,我们得到的是“undefined”而不是实际数据...[chaining] 为了使链接正常工作,该函数应始终返回一个Promise。 请参阅以下示例以了解正确用法。...[多个 promises] 现在,大多数情况下,async/await 函数用于异步操作。 Async/Await Async/Await 是处理 Promise 的一种更简洁的方式。...以 async 为前缀的函数总是返回一个 Promise。 [async] 我们可以通过以下方式resolve或reject异步函数中的Promise: [async] 那么,why await呢?

61630

Node.js 中的这几个场景都可以使用异步迭代器

MongoDB 中的 cursor 本处以 Node.js 驱动 mongodb 模块来介绍,当我们调用 db.collection.find() 这个方法返回的是一个 cursor(游标),如果想要访问文档那么我们需要迭代这个游标对象来完成...myCursor.next())); MongoDB 异步迭代器实现源码分析 MongoDB 中游标是以 hasNext() 返回 false 或 next() 返回为 null 来判断是否达到游标尾部...幸运的是 MongoDB Node.js 驱动已经帮助我们实现了这一功能,通过一段源码来看在 MongoDB 中的实现。 find 方法 find 方法返回的是一个可迭代游标对象。...// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/cursor.js#L610 if (SUPPORTS.ASYNC_ITERATOR.../async/async_iterator').asyncIterator; } // https://github.com/mongodb/node-mongodb-native/blob/3.6/

3.7K40

Node.js 中的异步生成器和异步迭代

生成器函数在 JavaScript 中的出现早于引入 async/await,这意味着在创建异步生成器(始终返回 Promise 且可以 await 的生成器)的同时,还引入了许多需要注意的事项。...假设我们要在生成器函数中使用 await,只要需要用 async 关键字声明函数,Node.js 就支持这个功能。...$ node test-program.js generator: [Function: [Symbol.iterator]] asyncGenerator undefined 这两个生成器对象都有一个...一个 async 函数将总是返回一个 Promise 对象。这个特性会带到用异步函数创建的生成器上——这些异步生成器始终会 yield 一个 Promise 对象。...如果看一看 async 生成器返回的构造函数或类 // File: test-program.js /* ... */ const main = () => { const generator =

1.7K30

如何优雅的不用try-catch捕获await的错误

来捕获问题,但是 async await 却只能使用 try catch 来捕获,这样写起来很不友好,代码中充斥着大量的 try catch,类似这种 (async () => { try {...既然刚才提到了 await 是 promise 的语法糖,那我们用 promise 方式来捕获就可以了吧,于是有了下面的代码 (async () => { const data = await getList...,一个是成功后返回的数据 (async () => { const [err, data] = await getList().then(data => [null, data]).catch(err...err, undefined]; }); } export default to; 主要流程如下,这个函数接收一个 promise 和 errorExt 的参数,如果 promise 成功返回...[null, data],如果有异常,则看是否有添加的异常信息,如果有则进行 err 的合并返回 [err, undefined] 使用的话也非常简单,只需要对自身的 promise 函数进行包裹,类似这样

26610
领券