Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 一次解决相互依赖的多个承诺_Ember.js - Fatal编程技术网

Ember.js 一次解决相互依赖的多个承诺

Ember.js 一次解决相互依赖的多个承诺,ember.js,Ember.js,我正在使用的将显示一个微调器,直到行动承诺解决 {{async-button action=(action "save" model) default="Save" pending="Saving..."}} actions: { save(model) { cont promise = model.save(); promise.then(() => { const promises = []; model.get('subModels')

我正在使用的将显示一个微调器,直到行动承诺解决

{{async-button action=(action "save" model) default="Save" pending="Saving..."}}
actions: {
  save(model) {
    cont promise = model.save();

    promise.then(() => {
      const promises = [];
      model.get('subModels').forEach((subModel) => {
        promises.pushObject(subModel.save());
      });

      return Ember.RSVP.all(promises);
    });

    return promise;
  }
}
在我的情况下,我不能开始孩子的承诺,直到父母的承诺已经解决

这不起作用,一旦父承诺解决,微调器将停止

{{async-button action=(action "save" model) default="Save" pending="Saving..."}}
actions: {
  save(model) {
    cont promise = model.save();

    promise.then(() => {
      const promises = [];
      model.get('subModels').forEach((subModel) => {
        promises.pushObject(subModel.save());
      });

      return Ember.RSVP.all(promises);
    });

    return promise;
  }
}
考虑到一些承诺依赖于其他承诺的完成,我如何保持一个长期承诺一直持续到所有依赖承诺完成为止

在所有依赖的承诺完成之前,我如何保持一个长期的承诺

最初的承诺在解决时解决(当顶级保存完成时),您不能“让它继续运行”。您需要返回保存所有子模型的承诺

return promise.then(() => {
  const promises = [];
  model.get('subModels').forEach((subModel) => {
    promises.pushObject(subModel.save());
  });
  return Ember.RSVP.all(promises);
}
或者更简单地说,使用
map

return promise.then(() => 
  Ember.RSVP.all(model.get('subModels').map(subModel => subModel.save()));
在所有依赖的承诺完成之前,我如何保持一个长期的承诺

最初的承诺在解决时解决(当顶级保存完成时),您不能“让它继续运行”。您需要返回保存所有子模型的承诺

return promise.then(() => {
  const promises = [];
  model.get('subModels').forEach((subModel) => {
    promises.pushObject(subModel.save());
  });
  return Ember.RSVP.all(promises);
}
或者更简单地说,使用
map

return promise.then(() => 
  Ember.RSVP.all(model.get('subModels').map(subModel => subModel.save()));

您的问题很简单,
返回promise
而不是返回
promise的结果。然后(…)


您的问题很简单,
返回promise
而不是返回
promise的结果。然后(…)