gpt4 book ai didi

node.js 请求模块,如何使用步骤将请求的 url 主体传递给下一个函数

转载 作者:搜寻专家 更新时间:2023-11-01 00:02:25 25 4
gpt4 key购买 nike

我想下载一个 html 页面并将其正文部分转发到下一个函数。我已经使用 step 来序列化函数。我正在使用请求模块下载页面。

    var Step = require('step');
var request = require('request');

Step(
function getHtml() {
if (err) throw err;
var url = "my url here";
request(url, function (error, response, html) {
// i want to pass the html object to the next function view
});

},
function view(err, html) {
if (err) throw err;
console.log(html);
}
);

如果我执行 request(url, this) 那么它会将整个页面数据(响应和 html)传递给下一个函数。

如何更改上面的代码以仅将 html 传递给下一个函数?

最佳答案

从步骤文档中记住:

It accepts any number of functions as arguments and runs them in serial order using the passed in this context as the callback to the next step.

因此,当每个步骤被​​调用时,this 就是您对下一步的回调。但是,您正在使用 request 调用输入回调,因此 this 将在此时发生变化。所以,我们只是缓存它。

var Step = require('step');
var request = require('request');

Step(
function getHtml() {
//if (err) throw err; <----- this line was causing errors
var url = "my url here"
, that = this // <----- storing reference to current this in closure
request(url, function (error, response, html) {
// i want to pass the html object to the next function view
that(error,html) // <----- magic sauce
});

},
function view(err, html) {
if (err) throw err;
console.log(html);
}
);

我的补充是在“<------”这一行。编码愉快!

关于node.js 请求模块,如何使用步骤将请求的 url 主体传递给下一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com