Angular 5,如果第一个功能有效,则执行新功能

Angular 5, execute new function if the first function works

如果与我的服务相关的此功能有效,我想发起一个新请求,如何进行?谢谢

test.component.ts

destroyUnicorn(item){
    this.itemService.updateUnicorn( {
        statut: "destroyed",
        id: item.id
    });
}

item.service.ts

updateUnicorn(item) {
    this.itemDoc = this.afs.doc("unicorns/${item.id}");
    this.itemDoc.update(item)   <------ FireStore request
    .then(function() {})
    .catch(function() {});
}

全局构想:

-- 1° 在我的模板中,我点击了一个执行我的组件函数deleteUnicorn的按钮。

--- 2°deleteUnicorn函数将参数发送到my services[=]中的updateUnicorn函数 35=],向Firestore发送修改数据库内容的请求。

-- 3 ° 我希望,当函数完成并运行时,能够执行一个新函数,该函数将修改数据库另一个 table 中的用户资金。

您可以连锁承诺。更改 updateUnicorn() 方法以 return a resolved promise 然后添加您想要的功能:

destroyUnicorn(item){
    this.itemService.updateUnicorn( {
        statut: "destroyed",
        id: item.id
    })
    .then(function(something) {
         // This will execute if updateUnicorn resolves.
    });
}

并且在您的 updateUnicorn 方法中:

updateUnicorn(item) {
    this.itemDoc = this.afs.doc("unicorns/${item.id}");
    this.itemDoc.update(item)   <------ FireStore request
    .then(function(something) {
          return Promise.resolve(something);
    })
    .catch(function() {});
}

此外,如果您不需要使用 itemDoc.update() 方法的响应,您可以像这样简单地更新函数:

updateUnicorn(item) {
    this.itemDoc = this.afs.doc("unicorns/${item.id}");
    return this.itemDoc.update(item);
}

并且 destroyUnicorn() 将保持不变。