gpt4 book ai didi

javascript - 请求 promise 总是返回响应而不是返回值

转载 作者:行者123 更新时间:2023-12-03 01:36:59 25 4
gpt4 key购买 nike

我想将请求 promise 内定义的变量传递给超出范围的变量。我想我可以在请求函数中使用 return 语句传递变量,但请求函数总是返回 http 响应(在本例中为 HTML 输出)。

我的代码:

require('dotenv').config();
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
var request = require('request-promise');

var get = function(arg1, arg2, arg3, arg4) {
request(`https://www.googleapis.com/customsearch/v1?key=${process.env.API_KEY}&cx=${process.env.CX}&q=${arg1}`, async function(err, res, body) {
var obj = JSON.parse(body);
var url = obj.items[0].formattedUrl;
var part = await request(`${url}/staffel-${arg2}/episode-${arg3}`, function(err, res, body) {
const dom = new JSDOM(`${body}`);
var part = dom.window.document.getElementsByClassName(arg4)[0];
return part;
});
console.log(part);
});
};

此外,我想使用 return 语句将输出传递给 get 函数。有什么办法可以做到吗?

编辑:从我的 Angular 来看,这不是 this question 的重复项。该请求返回一个值,但这不是我想要返回的值,如上所述。

最佳答案

我猜你的实现对于带有异步等待的请求 promise 来说并不完美。没有运行代码,但尝试下面的代码。

async function asyncCall(arg1, arg2, arg3, arg4){
try{
var first = await request(`https://www.googleapis.com/customsearch/v1?key=${process.env.API_KEY}&cx=${process.env.CX}&q=${arg1}`);
if(typeof first.body === "string"){
first.body = JSON.parse(first.body);
}
var obj = first.body;
var url = obj.items[0].formattedUrl;
var part = await request(`${url}/staffel-${arg2}/episode-${arg3}`)
if(typeof part.body === "string"){
part.body = JSON.parse(part.body);
}
var dom = new JSDOM(`${JSON.parse(part.body)}`)
return dom.window.document.getElementsByClassName(arg4)[0];
}
catch(e){
console.log(e);
}
}

关于javascript - 请求 promise 总是返回响应而不是返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51027252/

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