如何回归'来自它的孩子的父母功能?

时间:2016-10-17 19:07:20

标签: javascript function

我经常在项目中使用verifyInput函数,以确保我从用户那里获得有效的输入。我一次又一次地发现自己希望我可以从我的verifyInput中退出我的父函数。 verifyInput通常被赋予if currency == "USD": if currency == "GPB": if currency == "EUR": 函数。提示,有取消键。如果单击取消,我想退出嵌套表达式。我该怎么做?

prompt()

1 个答案:

答案 0 :(得分:1)

除非你抛出异常,否则无法直接从myLoop直接停止执行调用者(verifyInput)。

正如其他人所说,您可以检查myLoop的返回值以有条件地停止它。

但也许更清洁的解决方案是使用回调,只有在输入不是"exit"时才会调用。如果输入有效并且再次调用myFunc以继续循环,则此回调将负责获取输入。例如:

function verifyInput(prompter, callback) {
  var value = prompter()

  if (value === "exit") {
    return // don't proceed with the callback if `value` is "exit"
  }

  if (invalid(value)) { // function to be implemented
    alert("invalid")
    return verifyInput(prompter, callback)
  }

  callback(value)
}

function myFunc() {
  var prompter = () => prompt("What is your input?")
  verifyInput(prompter, (value) => {
    console.log(value) // logs the input
    myFunc()
  })
}

myFunc()

FIDDLE:https://jsfiddle.net/guisehn/r1Lwxkhp/