首页 > 解决方案 > ES6 生成器代码中任务/执行的用户是什么?

问题描述

我有一个 Ember 应用程序,在我的项目的某个地方,我可以看到以下用 ES6 编写的代码。

expandRow: task(function* (row, data, params){
    var $this = this;
    // Some code
    // ...
    // ...
    // const response = yield this.someServerCall(url, params);
    // ...
    // ...  
});

以上在某处使用

this.get('expandRow').perform(row, data, params);

看了上面的内容,虽然我对 ES6 中的 Generator 语法有所了解,但我对“task”和“perform”的具体使用有点困惑。

我在任何地方都找不到记录。此外,我在我的代码中找不到任何自定义定义。我应该在哪里查看更多关于语法的信息?

标签: javascriptecmascript-6generatoryield

解决方案


这都记录在 ember 文档的任务功能语法区域中

http://ember-concurrency.com/docs/task-function-syntax/

文档中的示例:

pickRandomNumbers: task(function * () {
  let nums = [];
  for (let i = 0; i < 3; i++) {
    nums.push(Math.floor(Math.random() * 10));
  }

  this.set('status', `My favorite numbers: ${nums.join(', ')}`);
}),

perform功能只是执行所述任务的一种方式。


推荐阅读