gpt4 book ai didi

node.js - 为什么 Node 应用程序的这条语句中必须有 'yield'?

转载 作者:搜寻专家 更新时间:2023-10-31 23:38:27 26 4
gpt4 key购买 nike

当我尝试为 koa 使用“koa-router”模块时,我看到了下面的示例代码片段。

app.get('/users/:id', function *(next) {
var user = yield User.findOne(this.params.id);
this.body = user;
});

我的问题是,为什么它在获取用户信息之前有 yield?为什么代码不能像下面这样没有 yield?有很大区别吗?

app.get('/users/:id', function *(next) {
var user = User.findOne(this.params.id);
this.body = user;
});

最佳答案

带有星号的函数 function *(){} 是一个生成器函数,它允许暂停恢复 使用 yield 关键字在函数内流动。

没有 yield 的生成器函数是无用的,它们是相辅相成的。

koa 的幕后,您的 generator 函数被 co 调用处理所有异步操作的库,将回调/ promise 抽象到库中,让您拥有更简单的代码。

我创建了一个 screencast关于理解生成器可能对您有所帮助。

关于node.js - 为什么 Node 应用程序的这条语句中必须有 'yield'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27612565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com