1
我是node.js的新手,我正在開發一個代碼庫,通過將調用包裝到生成器函數中來利用co庫。一個簡化的例子是這樣的:co node.js庫的用途是什麼?
module.exports.gatherData = function*()
{
// let img = //get the 1 pixel image from somewhere
// this.type = "image/gif";
// this.body = img;
co(saveData(this.query));
return;
};
function *saveData(query)
{
if(query.sid && query.url)
{
// save the data
}
}
所以我去了共同的主頁在GitHub和描述說:
「發電機基於控制流善良的NodeJS和瀏覽器,使用的承諾,讓你寫一個無阻塞碼好的方式。「
在node.js的上下文中,這段代碼不會是非阻塞的嗎?
yield saveData(this.query)
*這是不是代碼無阻塞太node.js的背景下? *號迭代器和發生器是同步操作。 * co *庫使用生成器語法來包裝承諾,使異步代碼看起來像是以同步方式編寫的。 'yield saveData'會產生一個未解決的Promise – CodingIntrigue
實際上'co(saveData(this.query));'生成器內部確實是垃圾。 – Bergi
爲什麼垃圾?你能詳細說明一下嗎? –