如何在两个 AngularJS 工厂之间使用回调?

How can I use callbacks between two AngularJS factories?

在我的 AngularJS 应用程序中,我有两个名为 "editInfo" 和 "pinVerify" 的工厂。我想要做的是让 editInfo 工厂使用这样的回调函数调用 pinVerify 服务 pinVerify.sendPin(this.saveInfo) 然后将该方法保存在 pinVerify 工厂中,以便在用户输入 pin 并按下调用按钮时使用pinVerify.pinEntered()

问题是回调方法将被复制到 pinVerify 对象中,并且将无法引用 editInfo 工厂中的属性。

所以...我自然而然地尝试在 pinVerify 工厂内使用 $q.defer(),并在用户输入通过 SMS 发送的 pin 时在 pinVerify.pinEntered() 中解决它。

这工作得很好,我可以在 editInfo 工厂内执行此操作而不是使用回调:

pinVerify.sendPin().then(function() {
    this.saveInfo();
}

并且 saveInfo 方法将检测 pin 是否正确并隐藏模式以输入它。当引脚 不正确时出现问题 .

承诺已经解决,因此再次单击调用 pinVerify.pinEntered 的按钮基本上不会执行任何操作。两次都解决不了

所以现在我有点回到我开始的地方,认真考虑在工作期间大量饮酒......

对于如何实现两家工厂之间的这种关系有什么建议吗?我想关于好的 beers/vodkas 的建议也有效。

虽然我在进入 $q promise 之前的第一次尝试看起来像这样但没有奏效 - pinVerify.sendPin(self.saveAddress);

我刚刚使用闭包方法作为回调自己解决了这个问题,然后在其中使用之前声明的 var self = this; 像这样

调用实际方法
pinVerify.sendPin(function() {
    self.saveAddress();
});