【发布时间】:2017-10-14 04:26:11
【问题描述】:
我有以下问题。我有一个订阅的 observable,我需要满足以下要求:
1 - registerUser 必须在回调数据处理完毕后执行。
2 - 如果 registerTask 返回数据,那么我会得到一个 ID 并且必须调用 registerUser 这也是一个 observable
3 - 如果 registerTask 返回错误,那么我必须调用 searchTaskByID 来获取 ID,然后调用 registerUser
问题是我不想在数据和错误括号中编写函数 registerUser 并且我不知道如何独立于上述条件执行它。有什么简单的方法吗?
这里的代码我到目前为止,没有按预期工作:
Angular 2 组件:
taskID:String
constructor(
private myService:MyService,
private router:Router
) { }
onClick() {
const task= {
name: this.taskID,
}
const user= {
name: "test",
}
return this.myService.registerTask(task).subscribe(
(data) => {console.log(data)
var taskId = data.taskId},
(error) => {console.log(error)
this.myService.searchTaskByName(task).subscribe(
(data) => {console.log(data)
var taskId = data.id},
(error) => {console.log(error)},
()=>{}
);
},
() => this.myService.registerUser(user).subscribe(
(data) => {console.log(data)
var userId = data.id},
(error) => {console.log(error)}
)
)
}
【问题讨论】:
-
上面的代码怎么没有按预期工作?
-
例如:如果 registerTask 返回一个错误,那么如预期的那样,searchTaskByName 被成功执行。但在那之后, registerUser 将不会被执行。之后我需要执行 registerUser。
标签: angular typescript