我正准备接受招聘平台TripleByte的采访,我将被要求实施终端游戏。我最熟悉javaScript,但学习回调并且对promises的经验很少。
我在这里阅读了关于何时何时不使用承诺的一般性描述,但我很好奇我是否应该在
中使用它们以下情景:
function promiseStart(reader){
askQuestion(reader, "Give me the super secret password\n")
.then((password) => {
if (password === "password"){
return askQuestion(reader, "Now give me the secure token\n");
} else {
throw "incorrect password"
}
})
.then((token) => {
if (token === "password"){
console.log("SUCCESS");
reader.close()
} else {
throw "incorrect token"
}
}).catch((error) => {
console.log(error);
promiseStart(reader);
})
}
function askQuestion(reader, question){
return new es6Promise.Promise((resolve, reject) => {
reader.question(question, (answer) => {
resolve(answer);
})
})
}
promiseStart(reader);
我真的应该从终端强制承诺IO吗?对于这个以及一般的游戏来说,使用回调似乎更直观,例如,我无法访问之前承诺的变量,否则我将在回调中关闭。
奖励:你认为有必要使用promises来表明我是最新的,或者如果我能用回调更舒服地写,我会不会因为这样做而失去分数?我对这次采访感到非常紧张,所以感谢任何帮助!