繁体   English   中英

将回应返回2个诺言

[英]Returning the responses to 2 promises

我正在使用Contenful来管理内容,并使用带有node.js的API来呈现内容。 但是,(并且我怀疑这个问题可能适用于正在发出2个请求并且需要返回合并结果的任何地方),但是我如何一起返回2个Promise的数据?

我有2个收藏集,分别是Page和News。

我想返回特定的页面和所有新闻,并且我可以分别完成这两个操作,完全没有问题。

var pageData;
client.getEntry('Homepage')
.then(function (entry) {

  pageData = entry.fields;
  res.render('index', {
    pageData
  });
})

var pageData;
client.getEntries({'content_type':'news'})
.then(function (entries) {

  pageData = entries;
  res.render('index', {
    pageData
  });
})

但是,我想要得到的是类似于以下内容的东西:

// Get the page
...

// Get the news items
...

res.render('index', {
pageData,
news
});

我该怎么做呢?

您可以通过同时启动两个请求并使用Promise.all等待它们都完成来并行执行请求:

Promise.all([
    client.getEntry('Homepage'),
    client.getEntries({'content_type':'news'})
])
.then(([pageData, news]) => {
    // Use `pageData` and `news` here
})
.catch(error => {
    // One of them failed, handle/display error
});

Promise.all等待所有promise都实现,然后将这些分辨率值作为一个数组以与接收到的数组中条目相同的顺序作为数组来实现其promise(或在其中一个promise拒绝时拒绝,继续拒绝原因)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM