首页 > 解决方案 > nodejs - 那么如何在里面有请求?

问题描述

我需要先生成一个key然后使用key运行request下面的代码只是一个例子

 const getKey = () => {
        return new Promises(resolve, reject) => {
            const value =  somecode here;
             resolve (value);
        }
    }

getKey().then(val => {
    request({method: 'GET', url: 'http://www.google.com', key: val}, function (error, response, body) {
            if (!error){
                console.log(body)
            }

        }); 
    }
});

我怎样才能将它们链接在一起使用Promises

标签: node.js

解决方案


改用request-promise库,然后从处理程序内部返回内部承诺.then()

你几乎不想将普通的异步回调与 Promise 混合在一起。当面临这个挑战时,要做的第一件事是“承诺”异步回调以使用承诺,以便您可以链接承诺。在这种情况下,该request-promise库已经是该库的承诺版本request。下面是你将如何做到这一点。

const rp = require('request-promise');

const getKey = () => {
        return new Promises(resolve, reject) => {
            const value =  somecode here;
             resolve (value);
        }
    }

getKey().then(val => {
    return rp({method: 'GET', url: 'http://www.google.com', key: val});
}).then(result => {
    console.log(result);
}).catch(err => {
    console.log(err);
});

这会将内部 Promise 链接到外部 Promise,以便 Promise 链的最终结果是来自内部 Promise 的结果。


编辑 2020 年 1 月 - request() 模块处于维护模式

仅供参考,该request模块及其衍生产品request-promise现在处于维护模式,不会积极开发以添加新功能。您可以在此处阅读有关推理的更多信息。此表中有一个备选方案列表,并对每个备选方案进行了一些讨论。我一直在使用got()自己,它从一开始就是使用 Promise 构建的,并且易于使用。


推荐阅读