在node.js中将两个请求承诺链接在一起需要一些帮助
我正在帮助一个Discord机器人,我正在使用node.js。我需要从两个单独的json提要中获取结果,并使用请求承诺在node.js中将两个请求承诺链接在一起需要一些帮助,node.js,request,discord,request-promise,Node.js,Request,Discord,Request Promise,我正在帮助一个Discord机器人,我正在使用node.js。我需要从两个单独的json提要中获取结果,并使用请求承诺 tableRequest().then(function(val) { console.log(val); }).catch(function(err) { console.err("Something went wrong"); }); playersReques
tableRequest().then(function(val) {
console.log(val);
}).catch(function(err) {
console.err("Something went wrong");
});
playersRequest().then(function(val) {
console.log(val);
}).catch(function(err) {
console.err("Something went wrong");
});
每个函数的顶部如下所示
function tableRequest(){
return new Promise(function(resolve, reject){
request('http://xxx.xxx.xxx.xxx/table', function (error, response, body) {
当我运行代码时,这两组数据都会很好地记录到控制台中,但从我所读到的来看,这并不是真的正确。然后我如何在其他地方使用这两个val
这根本不是我的专长。。我是个鼓手。如果您能提供帮助,谢谢。我建议您使用ES7: 然后,代码将变为:
async function myFunction() {
let val_1 = await tableRequest();
let val_2 = await playersRequest()
return {val_1, val_2}; // This way you could use the values
// inside another function
}
如果你仍然要使用承诺,你可以使用。使用蓝鸟的承诺,您可以:
const Promise = require('bluebird');
Promise.coroutine(function*() {
let val_1 = yield tableRequest();
let val_2 = yield playersRequest();
// Now you could use the values
})
如果您不想使用async/await
或bluebird
,您可以这样链接:
let val_1, val_2;
tableRequest().then(val => {
val_1 = val;
// Do something and return
return foo;
})
.then(foo => playersRequest())
.then(val => {
val_2 = val;
})
.catch(e => console.log(e))
我建议您使用ES7: 然后,代码将变为:
async function myFunction() {
let val_1 = await tableRequest();
let val_2 = await playersRequest()
return {val_1, val_2}; // This way you could use the values
// inside another function
}
如果你仍然要使用承诺,你可以使用。使用蓝鸟的承诺,您可以:
const Promise = require('bluebird');
Promise.coroutine(function*() {
let val_1 = yield tableRequest();
let val_2 = yield playersRequest();
// Now you could use the values
})
如果您不想使用async/await
或bluebird
,您可以这样链接:
let val_1, val_2;
tableRequest().then(val => {
val_1 = val;
// Do something and return
return foo;
})
.then(foo => playersRequest())
.then(val => {
val_2 = val;
})
.catch(e => console.log(e))
哇,我看了这么多的答案,感到很困惑。。我将在大约30分钟内尝试这些,希望能取得一些成功。看起来不错。@NiallMurphy还添加了链接逻辑。我不得不更新node的版本,但最终使async/await与您的代码完美配合。非常感谢。哇,我看了这么多的答案,感到很困惑。。我将在大约30分钟内尝试这些,希望能取得一些成功。看起来不错。@NiallMurphy还添加了链接逻辑。我不得不更新node的版本,但最终使async/await与您的代码完美配合。非常感谢。