javascript - 使用纯 jquery 进行 firebase 匿名身份验证

标签 javascript jquery firebase promise deferred

我正在尝试理解 deferred 和 promise。在理解核心概念之前,我不想使用任何库 angularfire 等。这就是我正在尝试做的事情,但总是得到错误的状态。请指教。 …………

 var defObj = $.Deferred();
 var fbref = new Firebase(<<firebase url>>);
 defObj.done(function() {
           console.log('Success')
          }
        );

 defObj.fail(function() {
           console.log('Fail')
          }
        );

  defObj.resolve(
          fbref.authAnonymously(function(error, authData) {
                if (error) {
                  defObj.reject();
                }
                /*
                else if (authData) {
                    defObj.resolve();
                }
                    */
   }); 
   return defObj.promise(); 
   ........

请忽略任何语法错误。早些时候,我将 fbref.authAnonymously 调用包装在一个单独的函数中。在 Debug模式下它会失败,但在运行模式下它总是会成功。 我确定我的 firebase 实例未启用匿名身份验证。

已编辑:拼写错误的标题。

最佳答案

Promises 现在是 JavaScript 的正式组成部分,您可以在最新的浏览器中使用它们而无需库。

function authAnonymously() {
  // 1
  var promise = new Promise(
    function(resolve, reject) {
      var ref = new Firebase(<<firebase url>>);
      ref.authAnonymously(function(error, authData) {
        if (error) {
          reject(error); // 2
        } else {
          resolve(authData); // 3
        }
      });
  });
}

authAnonymously()
  .then((authData) => console.log(authData)) // 4
  .catch((error) => console.error(error)); // 5

下面是这个例子中的五个步骤

  1. 创建一个 Promise 构造器
  2. 如果异步操作出错,用reject() 函数标记它。
  3. 如果异步操作要成功,用resolve()函数标记它。
  4. 调用authAnonymously() 函数并使用then() 函数开始 promise 链。成功后,此功能将触发。
  5. 使用 error() 函数继续 promise 链。如果发生错误,catch() 函数不会触发,但此 error() 函数会触发。

Promises 非常适合一次性回调。对于 Firebase,这非常适合身份验证方法和 once() 调用。这对于重复的回调来说不是很好,比如 on() 函数。

关于javascript - 使用纯 jquery 进行 firebase 匿名身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33854057/

相关文章:

javascript - 使用变量中预设的密码登录系统

javascript - 结合更改事件 li 和重新加载部分页面 javascript

javascript - 计算的可观察量未定义

javascript - 添加带有爆米花 TTML 字幕的视频元素

jquery - 事件处理程序不适用于动态内容

node.js - Firebase 与 Electron,如何保护主机?

android - Firebase crashlytics 中应用内消息传递崩溃?

android - Firebase token 未生成

javascript - Angular 路由/导航无法正常工作 : Appending instead of replacing component

jquery - 是否有用于切换 ENABLED 复选框的 jquery oneliner 代码?