在Angular 2中,可以使用setTimeout
函数和Promise
对象来等待函数为真或经过一段时间。
以下是一种实现方式:
waitForTrueOrTimeout
函数,该函数接受两个参数:待等待的函数和超时时间。函数的返回值是一个Promise
对象。function waitForTrueOrTimeout(condition: () => boolean, timeout: number): Promise<void> {
return new Promise<void>((resolve, reject) => {
const startTime = Date.now();
const checkCondition = () => {
if (condition()) {
resolve();
} else if (Date.now() - startTime >= timeout) {
reject(new Error('Timeout'));
} else {
setTimeout(checkCondition, 100); // 每100毫秒检查一次条件
}
};
checkCondition();
});
}
waitForTrueOrTimeout
函数,并传入待等待的函数和超时时间。waitForTrueOrTimeout(() => {
// 在这里编写待等待的函数,返回值为布尔类型
// 例如:return someCondition === true;
}, 5000) // 超时时间为5000毫秒
.then(() => {
// 当函数为真时执行的代码
console.log('函数为真');
})
.catch((error) => {
// 当超时时执行的代码
console.error('超时', error);
});
在上述代码中,waitForTrueOrTimeout
函数会每100毫秒检查一次待等待的函数是否为真,如果为真则通过resolve
函数解析Promise
对象,如果超过超时时间仍未满足条件,则通过reject
函数拒绝Promise
对象。
请注意,上述代码仅为示例,您可以根据实际需求进行修改和优化。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云函数(SCF)。
领取专属 10元无门槛券
手把手带您无忧上云