【发布时间】:2018-07-10 08:45:59
【问题描述】:
我想在f1 完成后致电f2。 f1 函数可以是同步或异步。我需要一个适用于这两种情况的示例。我找到了一个解决方案,使用 Promise 和计时器:
global() {
this.f1().then(res => {
this.f2()
})
}
f1() {
return new Promise<any>((resolve, reject) => {
// Some code...
setTimeout( () => {
resolve(x);
}, 1500);
});
}
f2() {
// Some code...
}
问题是程序总是要等待1500ms。我不想在f1 完成之前开始f2。
有没有办法等待所需的时间,而不是更多或更少?
【问题讨论】:
-
f2(); f1();怎么样 -
为什么要等待 1500 毫秒才能运行
f2?如果在将来的任何时候为完成f1检索数据需要更长的时间,您的代码就会中断。 -
您需要扩展您的问题以说明
f1中还发生了什么,如果它只是您超时的代码,那么您可以安全地删除它。如果是检索远程数据的调用,那么该调用将返回一个承诺,因此这是您必须从f1返回的承诺,然后f2将在数据返回后立即运行。
标签: angular typescript asynchronous promise synchronous