javascript - 如何在没有 setTimeout 的情况下延迟调用功能?角
问题描述
我需要将函数调用延迟几秒钟。我有解决方案,但足够好。
public recieveNewContact() {
this.allData();
setTimeout(() => {
this.lastAddedItem()
}, 100)
}
public ngOnInit() {
this.allData()
}
allData() {
this.accountsService.getContactPerson().subscribe(
(data) => {
console.log(data)
}
)
}
这很好用,但我不喜欢这样……我需要更好的解决方案,也许是 rxjs ?延迟 ?
这是非常重要的。
在这种情况下,我不需要这个:
allData() {
this.accountsService.getContactPerson().subscribe(
(data) => {
console.log(data)
this.lastAddedItem()
}
)
}
因为我不想在 init 上加载 lastAddedItem() .... 只有当 recieveNewContact 被触发时。
我将再次尝试解释:
public recieveNewContact() {
this.allData();
this.lastAddedItem()// here to be called when is allData finished without setTimeout
}
解决方案
我建议使用delay
(如果您 100% 确定完成时间)或finalize
(如果您想确保无论需要多长时间它都会等待)(rxjs)。
是否每次都需要调用 allData 函数,因为您可以将数据的本地副本保存在变量中,然后对其进行调整?还是 lastAddedItem API 调用?
另外我建议将 allData 设置为私有,因为不希望从 teplate 或其他组件调用它。
推荐阅读
- android - 在多个应用程序之间共享密钥库
- css - 我将如何将 CSS 变量大规模转换回其原始值?
- r - 需要一个 r 函数来反转 geom_sf ggplot 图表的经度坐标
- deployment - 我可以在共享主机上部署 react 和 mysql 吗?
- javascript - 为 HTML、XML、SVG 文件创建可共享的注释
- wordpress - 如何解决本地主机中的 WordPress 登录问题?
- android - 我如何在 Android Studio 上扫描片段中的 BLE
- spring - Spring Batch - 如何在不同的模式上创建元数据表?
- gcc - cmake:如何根据当前编译器版本添加编译器标志
- laravel - 删除前检查是否有与该省相关的用户?