Qual é o propósito do co node.biblioteca js?
Sou novo nodo.js e am estão trabalhando em uma base de código, que está fazendo uso da biblioteca co, embrulhando chamadas para funções geradoras. Um exemplo simplificado se parece com este:
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
}
}
Então fui à página principal do co em github e a descrição diz:
" Generator based control flow goodness for nodejs and the browser, using promises, letting you write non-blocking code in a nice-ish way."
este código não seria não-bloqueador também na contexto do nó.js?
yield saveData(this.query)
1
Author: Milen Kovachev, 2016-07-08
1 answers
Não há nada que bloqueie / não bloqueie as funções do gerador. São apenas uma ferramenta para expressar fluxo de controle interruptível.
Como o fluxo é interrompido só é determinado pelo chamador do gerador, neste caso a biblioteca co
que espera por valores assíncronos quando são cedidos. Há muitas maneiras de esfolar este gato com co
:
module.exports.gatherData = co.coroutine(function*() { … yield saveData(this.query)); }); var saveData = co.coroutine(function* (query) { if(query.sid && query.url) { // save the data } });
module.exports.gatherData = co.coroutine(function*() { … yield co(saveData(this.query)); }); function *saveData(query) { if(query.sid && query.url) { // save the data } }
module.exports.gatherData = co.coroutine(function*() { … yield* saveData(this.query)); }); function *saveData(query) { if(query.sid && query.url) { // save the data } }
3
Author: Bergi, 2016-07-08 13:23:07