request-promise总是返回响应而不是返回值

时间:2018-06-25 15:40:19

标签: javascript node.js scope request-promise

我想将在request-promise中定义的变量传递给超出范围的变量。我以为可以在request函数中使用return语句传递变量,但是request函数总是返回http响应(在这种情况下为HTML输出)。

我的代码:

DeleteAttributes = list(set(ExceptionList).intersection(AttributeList))

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

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

1 个答案:

答案 0 :(得分:1)

我想您的实现对于异步等待的请求承诺并不完美。 没有运行代码,但尝试下面的代码。

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);
    }
}