为了账号安全,请及时绑定邮箱和手机立即绑定

发出多个api / http node.js请求很困难

发出多个api / http node.js请求很困难

慕妹3242003 2021-04-27 13:26:45
您好,我有两个api请求可以单独工作,但是要让它们都在我的node.js应用程序上工作都遇到了很多麻烦。有没有简单的方法可以发出两个请求?我尝试过提出两个请求,将数据放入变量中,然后呈现它们两个,但是遇到全局变量问题。任何帮助,将不胜感激。  request(url, function (err, response, body) {    if(err){      res.render('index', {weather: null, error: 'Error, please try again'});    } else {      let weather = JSON.parse(body);      if(weather.main == undefined){        res.render('index', {weather: null, error: 'Error, please try again'});      } else {        if (rain == "0,rain"){        let weatherText = `It's ${weather.main.temp} degrees celsius and with wind speeds of ${weather.wind.speed} mph in ${weather.name} ${weather.sys.country}! & ${weather.weather[0].description}`  ;        res.render('index', {weather: weatherText, error: null});      }      else{        let weatherText = `It's ${weather.main.temp} degrees celsius and with wind speeds of ${weather.wind.speed} mph in ${weather.name} ${weather.sys.country}!`  ;        res.render('index', {weather: weatherText, error: null});      }      }    }  });request(url2, function (err, response, body) {  if(err){    res.render('index', {news: null, error: 'Error, please try again'});  } else {    let result = JSON.parse(body);    let news = result.articles[0].title    if(news == undefined){      res.render('index', {news: null, error: 'Error, please try again'});    }     else{      res.render('index', {news:news, error: null});    }    }  })
查看完整描述

2 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

我会使用“承诺”来等待,直到收到您的第一个请求的回复为止。一旦发生这种情况,您可以触发第二个请求(请参阅下面的链接中的“ then”)。一旦第二个请求返回结果,就可以在使用数据之前合并两个请求的响应。

如果请求B需要使用来自请求A响应的数据,则请求A应该位于链中的第一位。这样,您可以根据第一个请求的响应(例如,使用IF语句)来调整第二个请求。如果两者完全独立,则可以选择其中一个请求先行。

在此链接上有关于链接承诺的部分,该部分应与您要执行的操作有关:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/然后

有关使用promise和'catch'处理错误的详细信息https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch


查看完整回答
反对 回复 2021-05-13
?
倚天杖

TA贡献1828条经验 获得超3个赞

尽管确实可以简化请求结构,但实际上没有必要使用promise,但是您可以轻松地嵌套请求:


request(url, function(err, response, body) {

    request(url2, function(err2, response2, body2) {

        // Both request data is available here

    })

})

请注意,可以在此处更改回调函数中使用的变量名称


如果您有一堆可以独立运行的请求,请调查 promise.all


查看完整回答
反对 回复 2021-05-13
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信