node.js - 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
解决方案
改用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 构建的,并且易于使用。
推荐阅读
- python - 在 Python 中为特定熊猫单元格赋值的问题
- mysql - 如何在不使用 docker-compose 的情况下在单个命令中使用 dump.sql 文件启动 mysql docker 容器
- url - 添加 url 参数以获得更多结果
- bash - 将 shell 或 bash 添加到 docker 映像(基于 Debian GNU/Linux 的 Distroless)
- r - 将 tbl 转换为 R 中多个数据集的数据帧
- kubernetes - 为什么明显格式错误的 yaml 是验证的?
- java - spring bean默认优先级
- python-3.x - 在 IDE、python 路径上工作时出现 Anaconda / Pip ModuleNotFound 错误?
- java - java中的构造函数类型不匹配
- elasticsearch - Kibana 发现选项卡中未显示数据