Javascript 查找缺失的收益率语句
我正在寻找一种方法,在代码中找到函数是用*定义的位置(比如在Atom中使用jslint进行验证),但调用时没有指定“yield”。我太经常忘记“屈服”,我想要一些东西来提醒/验证这一点。有办法吗?也许是原子包 举例说明:Javascript 查找缺失的收益率语句,javascript,asynchronous,yield,Javascript,Asynchronous,Yield,我正在寻找一种方法,在代码中找到函数是用*定义的位置(比如在Atom中使用jslint进行验证),但调用时没有指定“yield”。我太经常忘记“屈服”,我想要一些东西来提醒/验证这一点。有办法吗?也许是原子包 举例说明: let f = function* () { yield doAsyncStuff(); yield doMoreAsyncStuff(); let res = yield fetchAsyncStuff(); return res; } let caller
let f = function* () {
yield doAsyncStuff();
yield doMoreAsyncStuff();
let res = yield fetchAsyncStuff();
return res;
}
let caller = function* () {
yield anotherFunction();
let res = x(); // <-- here I have missed the yield
}
设f=function*(){
产生doAsyncStuff();
产生domoreasynchstuff();
设res=yield fetchAsyncStuff();
返回res;
}
让调用者=函数*(){
产生另一个函数();
设res=x()//有一个规则被调用,该规则检测生成器函数中是否没有使用yield
关键字。但是在调用方
函数中,当调用另一个函数
时,您已经有了一个yield
,并且因为调用x
函数时不使用yield
可能是后面逻辑的一部分您的代码,没有逻辑方法检测丢失的yield
。顺便说一句,这个问题已经被讨论了很多,但并不可行:有一个规则被调用,该规则检测生成器函数中是否没有使用
yield
关键字。但是在您的调用方
函数中,您在调用另一个函数时已经有了一个yield
,并且在如果x
函数可能是代码背后的逻辑的一部分,则没有逻辑方法来检测缺失的yield
。
顺便说一句,这个问题已经被讨论得很多了,而且不可行:单元测试,嗯?:)我觉得这样的错误比编写测试容易得多。此外,我无法计算在测试时也遇到过多少次。不管你在哪里遇到这个问题,调试都要花费时间。单元测试,嗯?:)我我觉得这样的错误比编写测试要容易得多。此外,我无法计算在测试时也遇到过多少次这样的错误。不管你在哪里遇到这个问题,调试都要花费时间。怎么能不使用“屈服”呢成为逻辑的一部分?那么,如果生成器函数从未被屈服,那么调用它有什么意义呢?函数中的屈服就是安德烈。你有yield anotherFunction();
。然后在屈服之后,你可以修改做其他工作的某些状态。这是真的,没有屈服的生成器函数是没有意义的,它有一个eslint规则要求屈服
。但这不是你的情况。@andree你可能想把x
函数的结果保存为一个简单的变量能够执行并行操作或其他类型的算法,比如将实际的生成器对象保存在内存中,稍后再进行迭代。@MehranHatami,谢谢,你说得很好。无论如何,我是否可以强迫linter始终假设我想要屈服,而不将其作为简单变量留给以后的操作?@andree一个用例我不得不在一个列表中发送不同的生成器对象,让调用我函数的人决定在需要时对我的生成器进行yield
。怎么能不使用“yield”成为逻辑的一部分?那么,如果生成器函数从未被屈服,那么调用它有什么意义呢?函数中的屈服就是安德烈。你有yield anotherFunction();
。然后在屈服之后,你可以修改做其他工作的某些状态。这是真的,没有屈服的生成器函数是没有意义的,它有一个eslint规则要求屈服
。但这不是你的情况。@andree你可能想把x
函数的结果保存为一个简单的变量能够执行并行操作或其他类型的算法,比如将实际的生成器对象保存在内存中,稍后再进行迭代。@MehranHatami,谢谢,你说得很好。无论如何,我是否可以强迫linter始终假设我想要屈服,而不将其作为简单变量留给以后的操作?@andree一个用例我不得不在一个列表中发送不同的生成器对象,并让调用我函数的人决定在需要时在我的生成器上生成。