javascript - 您如何检测异步 couchdb 事件的完成?

标签 javascript jquery ajax couchdb

我在使用 jquery couchdb 库时遇到了一些问题。

我不确定如何检测加载事件何时结束。这是我的代码:

var ingredients;
  function loadIngredients() {
      try {
          var deferred = $.Deferred();
          $.couch.db("ingredients").allDocs({
              success: function (result) {
                  ingredients = result;
                  deferred.resolve();
                  return deferred.promise();
              }
          });
      }
      catch (err) {
          alert(err.message + " loadingredients");
          deferred.reject();
      }
  }

  try
  {
      var promise = loadIngredients();
      promise.done(function(){(alert("done"))});
  }
  catch (err) {
      alert(err.message + " execution");
  }

我现在有点生气,所以如果这没有意义,我深表歉意。

我只需要知道如何检测 $.couch.db("ingredients").allDocs() 事件何时结束。不过,我无法理解 promise 这样做的语法。 任何帮助将不胜感激。谢谢。

最佳答案

从 loadIngredients() 返回 promise 并将方法分配给 done(),如下所示。

因此 loadIngedients() 创建一个延迟并返回它(作为 promise ),但只有当 allDocs() 成功函数解析延迟时,才会调用 promise.done() 方法,从而触发“完成”警报...

请注意,您可能还希望在 loadIngredients() 的调用者中处理被拒绝的场景。使用 promise 之外的 fail() 方法来执行此操作。如果需要,您可以将它与 done() 方法链接起来,如下所示

var ingredients;

function loadIngredients() {
  var deferred = $.Deferred();

  try {
      $.couch.db("ingredients").allDocs({
          success: function (result) {
              ingredients = result;
              deferred.resolve();
          }
      });
  }
  catch (err) {
      alert(err.message + " loadingredients");
      deferred.reject();
  }
  return deferred.promise();
}

try
{
    var promise = loadIngredients()
    promise.done(function(){(alert("done"))}).fail(function() { alert('FAIL!'); });
}
catch (err) {
    alert(err.message + " execution");
} 

关于javascript - 您如何检测异步 couchdb 事件的完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642891/

相关文章:

javascript - 按类别从 .click 获取数据值

javascript - 在下划线模板中动态设置图像

javascript - Wordpress AJAX 不起作用 - 响应 0

javascript - jQuery SlideToggle 正在添加空白

javascript - 空字符串检查问题: JavaScript

javascript - 如何删除表单中的按钮格式以便将按钮用作切换按钮?

javascript - 如何制作带有子链接的可点击列表?

php - ajax php总是返回null

javascript - 在表示 ObjectID 的字符串数组中查找 mongoose ObjectID 时出现问题

javascript - 如何在 ReactJS 中正确检测鼠标滚轮