栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript 如何以angular的角度从Observable / http / async调用返回响应?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript 如何以angular的角度从Observable / http / async调用返回响应?

原因:

undefined
是因为您正在执行异步操作。意味着完成该
getEventList
方法将需要一些时间(主要取决于您的网络速度)。

因此,让我们看一下http调用。

this.es.getEventList()

实际发出(“触发”)请求后,与您的http请求

subscribe
等待
响应。等待期间,javascript将执行此代码下面的行,如果遇到同步分配/操作,它将立即执行它们。

因此,在订阅

getEventList()
并等待响应后,

console.log(this.myEvents);

行将立即执行。而且它的值是

undefined
在响应从服务器到达之前(或首先初始化的内容)。

类似于执行以下操作:

ngonInit(){    setTimeout(()=>{        this.myEvents = response;    }, 5000);    console.log(this.myEvents); //This prints undefined!}

解:

那么我们如何克服这个问题呢?我们将使用该

subscribe
方法的回调函数。因为当数据从服务器到达时,它将
subscribe
在响应中。

因此,将代码更改为:

this.es.getEventList()    .subscribe((response)=>{        this.myEvents = response;        console.log(this.myEvents); //<-- not undefined anymore    });

会在一段时间后打印响应。


您应该做什么:

除了记录响应之外,您的响应可能还有很多事情要做。您应该

subscribe
在数据到达时在回调函数(在函数内部)内执行所有这些操作。

要提到的另一件事是,如果您来自

Promise
后台,则
then
回调
subscribe
与可观察对象相对应。


您不应该做的事情:

您不应该尝试将异步操作更改为同步操作(并非可以)。我们进行异步操作的原因之一是,在该时间段内用户可以执行其他操作时,不要让用户等待操作完成。假设您的一个异步操作需要3分钟才能完成,如果我们没有异步操作,该接口将冻结3分钟。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376927.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号