Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了typescript – Angular 2 – 直接从Observable返回数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在试图解决这个问题,而且我已经能够阅读的任何文件都没有给我一个问题的答案。

我有一个服务,直接与API交谈,并返一个可观察的事件,在正常情况下,我会订阅并做我想要的数据,但是在利用来自宁静服务的请求的二级服务中,我需要能够从请求中返回值。

getSomething() {
    return this._restservice.addrequest('object','method').run()
        .subscribe(
            res => {
                res;
            },err => {
                console.error(err);
            }
        );
}

returnSomething() {
    return this.getSomething();
}

在上面的快速示例中,我想知道是否有任何方法可以在returnSomething()中从getSomething()返回res。如果以这种方式无法实现,那么替代方案是什么?我将补充说,_restservice非常依赖,我真的不想开始搞乱它。

由于http调用等是异步的,因此您将获得Observable而不是返回的同步值。你必须订阅它,并在那里的回调中获得数据。没有办法解决这个问题。

一种选择是将您的逻辑放在订阅调用

getSomething() {
    return this._restservice.addrequest('object','method').run()
        .subscribe(
            res => {
                // do something here
                res;
            },err => {
                console.error(err);
            }
        );
}

但我喜欢这样做的方法添加一个回调,从外部注入逻辑(可能是一个组件,也许是另一个服务):

getSomething(callBACk: (data) => void) {
    return this._restservice.addrequest('object','method').run()
        .subscribe(
            res => {
                callBACk(res);
            },err => {
                console.error(err);
            }
        );
}

在您的组件或任何地方:

this._yourservice.getSomething((data) => {
    // do something here
    console.log(data);
});

大佬总结

以上是大佬教程为你收集整理的typescript – Angular 2 – 直接从Observable返回数据全部内容,希望文章能够帮你解决typescript – Angular 2 – 直接从Observable返回数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。