最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

使用多个。然后于JavaScript校正评估顺序

IT培训 admin 3浏览 0评论

使用多个。然后于JavaScript校正评估顺序

我很痛苦,使在JavaScript的代码同步。

评论(1,2和3)说,在顺序会发生什么,现在它有可能创造一个新的酒吧前保存所有者。

我需要findOne,可能saveBar,然后saveOwner。

function setMyBar(req, res, next) {
  const owner = req.queryOwner;
  Bar.findOne({
    placeId: req.body.placeId
  })
    .then((bar) => {
      if(bar){
        owner.bar = bar; //1
        return owner;
      }else{
        barCtrl.saveBar(req.body.name, req.body.placeId, req.body.longitude, req.body.latitude)
        .then((savedBar) => {
          owner.bar = savedBar; //3
          return owner;
        })
        .catch(e => {return Promise.reject(err) })
      }
    }).then(() => {
      owner.save()
        .then(savedOwner => res.json(savedOwner)) //2
        .catch(e => next(e));
    })
    .catch(e => next(e));
}
回答如下:

你需要返回的承诺在第一then()else条件。现在什么都不会返回所以跳转到下一个then barCtrl.saveBar()以往结算前

尝试

 Bar.findOne({
    placeId: req.body.placeId
  })
    .then((bar) => {
      if(bar){
        owner.bar = bar; //1
        return owner;
      }else{
       // return this promise
       return barCtrl.saveBar(req.body.name, req.body.placeId, req.body.longitude, req.body.latitude)
        .then((savedBar) => {
          owner.bar = savedBar; //3
          return owner;
        })
        .catch(e => {return Promise.reject(err) })
      }
    }).then(() => {
      owner.save()
        .then(savedOwner => res.json(savedOwner)) //2
        .catch(e => next(e));
    })
    .catch(e => next(e));

使用多个。然后于JavaScript校正评估顺序

我很痛苦,使在JavaScript的代码同步。

评论(1,2和3)说,在顺序会发生什么,现在它有可能创造一个新的酒吧前保存所有者。

我需要findOne,可能saveBar,然后saveOwner。

function setMyBar(req, res, next) {
  const owner = req.queryOwner;
  Bar.findOne({
    placeId: req.body.placeId
  })
    .then((bar) => {
      if(bar){
        owner.bar = bar; //1
        return owner;
      }else{
        barCtrl.saveBar(req.body.name, req.body.placeId, req.body.longitude, req.body.latitude)
        .then((savedBar) => {
          owner.bar = savedBar; //3
          return owner;
        })
        .catch(e => {return Promise.reject(err) })
      }
    }).then(() => {
      owner.save()
        .then(savedOwner => res.json(savedOwner)) //2
        .catch(e => next(e));
    })
    .catch(e => next(e));
}
回答如下:

你需要返回的承诺在第一then()else条件。现在什么都不会返回所以跳转到下一个then barCtrl.saveBar()以往结算前

尝试

 Bar.findOne({
    placeId: req.body.placeId
  })
    .then((bar) => {
      if(bar){
        owner.bar = bar; //1
        return owner;
      }else{
       // return this promise
       return barCtrl.saveBar(req.body.name, req.body.placeId, req.body.longitude, req.body.latitude)
        .then((savedBar) => {
          owner.bar = savedBar; //3
          return owner;
        })
        .catch(e => {return Promise.reject(err) })
      }
    }).then(() => {
      owner.save()
        .then(savedOwner => res.json(savedOwner)) //2
        .catch(e => next(e));
    })
    .catch(e => next(e));
发布评论

评论列表 (0)

  1. 暂无评论