承诺流量控制

时间:2017-07-10 18:36:22

标签: javascript node.js promise es6-promise

我有三个资源:

  1. 饭店
  2. 地址
  3. 图像
  4. 酒店可以有一个地址,但有很多图片。在首先保存所有三个的同时,我需要保存酒店详细信息然后获取酒店ID,我应该将其与地址和每个图像相关联并逐个保存。

    现在,我认为我可以并行保存图像和地址,如果出现故障,我应该能够回滚事务。保存图像时,我知道我可以使用Promise.all

    在给定关系约束的情况下保存所有资源的同时,Promise链流应该是什么。

    让我更清楚一点,我想要像:

      A
     / \
    B   C
    

    机器人B和C获得A返回的相同值。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

function createHotel(data) {
  // Create your hotel
}

function createAddresses(addresses, hotelId) {
  // Create addresses with hotelId
}

function createImages(images, hotelId) {
  // Create images with hotelId
}

createHotel({ name: 'Test' })  // I don't know your structure, this is just placeholder
  .then(function(hotel) {
    return Promise.all([
      createAddresses(addresses, hotel.id),
      createImages(images, hotel.id)
    ]);
  })
  .then(function() {
    // Everything was created successfully
    console.log('Done!');
  })
  .catch(function(err) {
    // Rollback here
    console.log(err);
  })