2017-05-07 108 views
0

我目前正在尝试使用得到模块https://www.npmjs.com/package/got但我对函数的格式/顺序有点困惑。这是显而易见的,你可以链中的听众和功能,因此链接函数

got.stream(link) 
.on('response', resp => { 
    if (resp.statusCode != 200) this.emit('error', '!200') 
}) 
.on('error', err => { 
    console.log(err) 
}) 
.pipe(somewhere) 

request模块也做到这一点。但是,如果您希望只在条件resp.statusCode != 200的条件下发生,您如何避免.pipe?看到它在很多请求模块中使用,它必须是一个非常基本的东西来理解,但我不能完全理解它。

+0

当你'got.stream(无论)',它产生一个“只读流”,这是基本的东西这在块发出的数据,而不是像立即像普通功能或其他任何东西一样立即返回所有内容。你可以在这里看到可读流的文档:https://nodejs.org/dist/latest-v7.x/docs/api/stream.html#stream_readable_streams – Markasoftware

+0

对 - 但有没有办法不开始管道,直到条件会见?或者在这种情况下不可能? [fetch](https://www.npmjs.com/package/fetch)似乎能够通过将流分配给一个变量来实现这一点,并且只要监听器中的“this”能够管道化,只要 – platizin

回答

1

你不需要需要来链接它,如果你不想,在这种情况下,你不想。下面是你一个简单的例子会做没有链接:

const gotStream = got.stream(link); 
gotStream.on('response', resp => { 
    if(resp.statusCode == 200) { 
     gotStream.pipe(somewhere); 
    } 
}); 
+0

我现在看到了。在发布这个问题之前,我已经尝试过了,但是我正在使用'got(link)'并尝试用管道来代替。非常感谢你! – platizin

+0

很高兴能帮到你!如果这完全回答您的问题,您可以点击投票计数器下面的检查以“接受”这个答案为正确答案。 – Markasoftware