【问题标题】:Not able to get .then method from a subscribed service无法从订阅的服务中获取 .then 方法
【发布时间】:2018-03-01 00:49:55
【问题描述】:

在服务内部发出补丁请求后,我试图获得成功错误响应。尽管我可以对服务本身的成功或错误响应进行解密,但我无法“订阅”或获得对调用它的组件中的函数的承诺回复。

这是我的组件中调用服务的函数

this.os.edit({
            description: this.form.value.description,
            role_info: {
                all_learning_points: learningPointsArray
            }
        }).then((data) => {
          console.log("Data is ", data);//Can't get the value over here
        }, (error) => {
          console.log("Error is: ", error);
        });

这是服务中的功能

edit(data) {
        return new Promise((resolve, reject) => {
            this.model.patch(`opportunities/${this.opportunity.value.id}`, {opportunity: data})
            .subscribe(data => {
                this.opportunity.next(data); //Getting the value here
                this.router.navigate(['opportunity', this.opportunity.value.id]);
            }, error => {
                console.log("Error is: ", error);
              alert('Something went wrong');
            });
        })
    }

不知何故,我的 .then 无法捕获编辑函数中的 promise 抛出的响应。

我在这里错过了什么?

【问题讨论】:

  • 你为什么要订阅promsie,它应该被解决,而且你不需要在服务中解决,而是返回一个承诺并在组件中解决它

标签: javascript angular angular2-services angular2-observables


【解决方案1】:

使用 Promises 你需要改变这一行(观察者/主题风格)

this.opportunity.next(data);

进入

resolve(data)

而且你们还混在一起。最好只使用其中的一个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多