我用我的代碼如下模式:Node.js的發電機「已經運行」引發錯誤的時候將自己
let gen = (function*(){
let foo = yield setTimout((err, something)=> err ? gen.throw(err) : gen.next(something), 1000, new Error('My error message'), null);
console.log(foo);
})();
gen.next();
哪裏setTimeout
一些異步函數(例如數據庫中讀取或東西)。 這適用於瀏覽器內部,但是當我從node.js v 7.9.0開始爲我的Sailsjs應用程序在摩卡集成測試 內運行它時,而不是顯示My error message
,發生錯誤時(例如,當Sails在exec
上返回錯誤時),它顯示Uncaught TypeError: Generator is already running
。快樂的情況下(即我撥打gen.next(something)
)沒有問題。是什麼賦予了?
而之前觸發高興旗的人跳:沒有,當我得到的語法錯誤或不gen.throw
N,像this question其他錯誤,該行爲是正確的 - 錯誤信息是適當的,堆棧跟蹤指向右方地點。
看來,當我返回一個承諾,並從承諾'然後'或'catch'調用'gen.throw'時,一切正常。這隻發生在通用回調中。 – Megakoresh