我遇到了這個問題:function*(){ ... }
從這個網頁https://github.com/jmar777/suspend並不確定它是做什麼的。「function *()」在nodejs中的含義是什麼?
任何人都可以解釋嗎? 謝謝!
我遇到了這個問題:function*(){ ... }
從這個網頁https://github.com/jmar777/suspend並不確定它是做什麼的。「function *()」在nodejs中的含義是什麼?
任何人都可以解釋嗎? 謝謝!
這意味着該函數是一個生成器函數。引用自http://wiki.ecmascript.org/doku.php?id=harmony:generators#syntax
帶*符號的函數被稱爲生成函數。
正常函數執行並返回結果。但是生成器會產生值並等待它們再次被調用。然後該函數將恢復爲其執行。
生成器函數通常是迭代的。因爲,他們產生的值並等待下一個函數調用恢復執行,它們對無限值生成器很有用。
它們也具有記憶效率。例如,假設您想要生成10000000個數字,如果我們將它們存儲在數組中,則可能會耗盡機器的內存。但是如果我們使用一個生成器,我們可以生成一個數字,yield值,當再次調用時,執行將被恢復,並且可以生成下一個數字。
我們可以看一下例子,here,
function* fibonacci() {
let [prev, curr] = [0, 1];
for (;;) { // Infinite looping
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
正如我所說,發電機被重複這樣
for (n of fibonacci()) {
// truncate the sequence at 1000
if (n > 1000)
break;
print(n);
}
見發生器功能實際上有一個無限循環。當執行yield curr
時,值將返回n
,n of fibonacci()
。這用於迭代中,並且當再次調用生成器時,它將恢復執行(它也將變量中的數據保留在變量中)並生成下一個元素。
http://wiki.ecmascript.org/doku.php?id=harmony:generators –
它是發電機功能(EcmaScript)和問題已經被回答[這裏](http://stackoverflow.com/questions)/9620586 /功能中的JavaScript)。 – 2014-02-25 03:43:41