我正在使用 ember.js 和 RSVP。
据我所知,没有任何东西可以处理异步调用的超时。
我的想法是使用装饰器模式包装解析处理程序,将解析处理程序包装在某些代码中,这些代码将计时调用并在发生超时时调用拒绝。
这听起来是个好主意吗?还是有一些内置的对超时的支持,而我在 RSVP 中错过了。
对于不使用的应用程序jQuery https://jquery.com/,您可以创建一个抛出超时错误的 Promise 对象并使用以下命令运行您的任务Promise.race
得到第一个结果。
/**
* @param {number} msWait
* @param {string} error - error message
* @return {Promise}
*/
const promiseTimeout = (msWait, error) => {
return new Promise((resolve, reject) => {
setTimeout(() => reject(new TimeoutError(error)), msWait)
})
}
// Run tasks with timeout error
Promise.race([
Android.detector(),
IOS.detector(),
promiseTimeout(settings.platformDetectionTimeout, 'Can\'t detect your platform')
])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)