/** * 首页蓝牙连接等流程用到的轻量异步工具(与组件内同名方法行为一致) */ export function sleep(ms = 300) { return new Promise((resolve) => setTimeout(resolve, ms)) } /** * @param {() => boolean} checker * @param {number} timeout 总超时 ms * @param {number} interval 轮询间隔 ms * @returns {Promise} 条件在超时前成立为 true,否则 false */ export function waitForCondition(checker, timeout = 12000, interval = 250) { return new Promise((resolve) => { const start = Date.now() const timer = setInterval(() => { try { if (checker()) { clearInterval(timer) resolve(true) return } } catch (e) { clearInterval(timer) resolve(false) return } if (Date.now() - start >= timeout) { clearInterval(timer) resolve(false) } }, interval) }) }