用 ECMAScript 2018 (ES9) 解析成对口令匹配的问题

阅读时长 4 分钟读完

前端开发必须经常处理用户输入的数据,其中之一就是密码。一些密码规则是要求用户输入两个相同的密码。例如,在注册时,要求用户输入新密码两次,以保证用户没有输入错误或打错字。

那么在前端中如何检查两个密码是否匹配呢?在 ECMAScript 2018 (ES9) 中提供了一种新的解决方案: 异步迭代生成器.

什么是迭代生成器?

在学习 ECMAScript 2018 (ES9) 之前,让我们先了解一下迭代生成器。 迭代生成器是 ECMAScript 6 (ES6) 中引入的一种新类型。

它是一种可以从生成器中一遍又一遍地获取值的函数。 生成器的函数体中包含yield 语句。每次调用迭代器对象的 next 方法,都会返回一个包含当前值及一个布尔值的对象。

下面是一个简单的迭代生成器示例,它返回一个斐波那契数列:

-- -------------------- ---- -------
--------- ----------- -
  --- - - -- - - --
  ----- ------ -
    ----- --
    --- -- - --- - - ---
  -
-

----- --- - ------------
------------------------------ -- -
------------------------------ -- -
------------------------------ -- -
------------------------------ -- -
------------------------------ -- -

在此例中,当我们调用 fibonacci() 函数时,它会返回一个迭代器对象,我们可以使用 next() 方法从迭代器中获取斐波那契数列。

异步迭代生成器

在 ECMAScript 2018 (ES9) 中,我们可以使用异步迭代生成器来处理生成器中的异步操作。异步迭代生成器与普通迭代生成器非常相似,区别在于它的函数体中可以包含异步操作。

下面是一个简单的异步迭代生成器示例,它用于读取远程资源:

-- -------------------- ---- -------
----- --------- ---------------- -
  ----- -------- - ----- -----------
  ----- ------ -
    ----- ---- - ----- ----------------
    -- ------ -
      ----- -----
    - ---- -
      ------
    -
  -
-

在此示例中,当我们调用 fetchRemote() 函数时,它会返回一个异步迭代器对象,我们可以使用 next() 方法从迭代器中获取响应文本。

应用

现在我们可以将异步迭代生成器应用于检查两个密码是否匹配:

-- -------------------- ---- -------
----- --------- -------------------- --- -
  -- --- -- --- -
    ----- -----
  - ---- -
    ----- ------
  -
-

----- -------- ----------------------- --- -
  --- ----- ------ ----- -- -------------------- ---- -
    -- -------- -
      ---------------------- -- --- --------
    - ---- -
      ---------------------- --------
    -
  -
-

---------------------------------- --------------- -- --------- -----
---------------------------------- ------------ -- --------- -- --- -----

在此示例中,我们定义了一个名为 comparePasswords() 的异步迭代生成器,它接受两个密码作为参数,如果两个密码相同,则返回 true。否则,返回 false

checkPasswordsMatch() 函数接受两个密码作为参数,它使用 comparePasswords() 函数来检查两个密码是否匹配。如果密码匹配,则输出"Passwords match"。 如果密码不匹配,则输出"Passwords do not match"。

由于 comparePasswords() 函数是一个异步迭代生成器,因此我们可以使用 for await...of 循环来获取从它返回的所有值。

总结

异步迭代生成器是 ECMAScript 2018 (ES9) 中引入的新功能之一。 它使在实际开发中处理异步数据变得更加容易。本文的例子演示了如何使用异步迭代生成器检查两个口令是否相同。 通过使用这项技术,我们可以更简单,更安全地完成密码匹配工作。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b2190d48841e9894e69de5

纠错
反馈