如何使用JavaScript承诺提示异步操作?

时间:2014-04-24 09:33:58

标签: javascript promise bluebird

出于学习目的,我想展示promises如何帮助解决JavaScript中数据库操作的时间依赖性。

所以,我想表明:

db.find(14);

实际上消耗了幕后的时间。

我如何说明这种时间依赖性以及Promises提供的可能解决方案?

到目前为止我所拥有的是:

  // data store operation take time
  function _findByUsername(username) {
    var user = _.findWhere(Users, {username: username});
    if (!user) {
      Promise.reject(new Error("User not found."));
    }
    return Promise.resolve(user);
  }

1 个答案:

答案 0 :(得分:0)

选项可能是使用Bluebird的delay功能并添加注释,如下所示:

findByUsername(username) { 
   /* simulates the behavior of a database operation */
   return Promise.delay(10).thenReturn(_.findWhere(Users, {username: username}))
 }