我可以在提示中插入函数吗?

Can I insert a function inside of a prompt?

我正在尝试为我自己和几个朋友推出一个非常基本的聊天应用程序,并希望在加载网站时使用提示 + socket.emit:

包括密码检查
var username = prompt('password:');
socket.emit('password', password);

我想插入一个函数,根据我定义的答案检查他们的输入。像这样:

var codeword = prompt('password:', function checkPrompt(password) {
            if (prompt.password.length === 0) {
                return false;
            }

            if (password.value !== answer.value) {
                return false;
            }

            return true;
            });

但是我 ERR_INVALID_ARG_TYPE(name, 'Function', value); 一旦我 运行 应用程序。我该如何实施?

旁注:我知道这非常不安全。一旦我设置了数据库,我将实施真正的密码检查,但在那之前我只想要一个简单的占位符。

prompt 是一种“阻塞”方法,因此不需要回调。当您不确定何时执行回调中的代码时,需要回调。这里不是这种情况。例如,您可以在 do...while 循环中使用 returned 结果。

带有静态密码检查的虚拟示例:

// We will keep the user in the loop until the password is correct...
do {
   var password = prompt('Password:');
} while (password !== 'abcd');

// At this point we know the password was correct.
alert('Password was correct!');

具有专用身份验证方法的虚拟示例:

function authenticate(username, password) {
  if (username == 'john' && password == 'abcd') {
    return true;
  }
  return false;
}

// We will keep the user in the loop until the password is correct...
do {
   var username = prompt('Username:');
   var password = prompt('Password:');
   var loginSuccessful = authenticate(username, password);
} while (!loginSuccessful);

// At this point we know the password was correct.
alert('Password was correct!');

从安全的角度来看,只有在服务器端具有身份验证逻辑才有意义,因此您很可能希望从上述 [=14] 中进行 AJAX 调用=] 函数(例如使用 Fetch API 或 jQuery.post - 如果您使用 jQuery)。然后该方法将根据服务器端调用的响应 return truefalse