首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSVP -使用promises处理超时

RSVP -使用promises处理超时
EN

Stack Overflow用户
提问于 2014-03-27 18:39:10
回答 2查看 1.1K关注 0票数 4

我正在使用ember.js和RSVP。

在我看来,没有任何东西可以处理异步调用的超时。

我的想法是使用装饰器模式包装resolve处理程序,将resolve处理程序包装在一些代码中,这些代码将对调用计时,并在发生超时时调用reject。

这听起来是个好主意,还是有一些内置的对超时的支持,我在RSVP中错过了。

EN

回答 2

Stack Overflow用户

发布于 2016-06-22 11:30:01

对于不使用jQuery的应用程序,您可以创建抛出超时错误的promise对象,并使用Promise.race运行任务以获得第一个结果。

代码语言:javascript
复制
/**
 * @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')
])
票数 2
EN

Stack Overflow用户

发布于 2014-03-30 08:00:24

您可以这样做,但这可能应该由正在执行异步操作的任何设备来处理。如果您使用的是jQuery ajax,那么:

代码语言:javascript
复制
$.ajax({
  //...
  timeout: 1000 * 10 // 10 seconds
  //...
})

如果您控制服务器端并预计会出现拥塞,那么您应该在该级别中断长时间运行的进程并返回错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22685055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档