Angular 5,如果第一个函数有效,则执行新函数

时间:2018-01-23 02:39:56

标签: javascript angular angular5

如果此功能与我的服务有关,我想发布一个新请求,如何继续?谢谢

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°在我的模板中,我点击执行 my component 功能deleteUnicorn 的按钮。

--- 2° deleteUnicorn功能将参数发送到我的服务中的 updateUnicorn功能,该功能会向Firestore发送请求修改数据库中的内容。

- 3°我希望,当功能完成并且有效时,能够执行一个新功能,该功能将修改用户在数据库的另一个表中的钱。

1 个答案:

答案 0 :(得分:2)

你可以链接承诺。更改updateUnicorn()方法以返回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()将保持不变。