在条件是同步还是异步的情况下调用函数?

时间:2019-08-26 03:12:45

标签: javascript

我有一个方法:

function checkNestedfield(obj /*, level1, level2, ... levelN*/ ) {
  var args = Array.prototype.slice.call(arguments, 1);

  for (var i = 0; i < args.length; i++) {
    if (!obj || !obj.hasOwnProperty(args[i])) {
      return false;
    }
    obj = obj[args[i]];
  }
  return true;
}

如果条件让我得到正确的结果,则在内部调用,但是我应该如何知道每次是否都能正确执行。 因此,如果条件是异步或同步过程,则在内部调用函数?

例如:

if (checkNestedfield(someObj, 'stringValue')) {
  console.log('true')
} else {
  console.log('false')
}

1 个答案:

答案 0 :(得分:0)

如果函数是否返回某些错误,可以使用try/catch逻辑来“捕获”,如下所示:

let nestedField = false;

function checkNestedfield(obj /*, level1, level2, ... levelN*/ ) {
  let args = Array.prototype.slice.call(arguments, 1);

  for (let i = 0; i < args.length; i++) {
    if (!obj || !obj.hasOwnProperty(args[i])) {
      throw "myException"; // Give control to the 'catch' sentence
    }
    obj = obj[args[i]];
  }
  return true;
}

try (
  checkNestedfield(someObj, 'stringValue');
) catch (e) {
  console.log('Log the error here');
}

通过这种方式,如果您的checkNestedfield函数失败,则可以按照所需的任何方式处理错误。这种行为总是同步的,每次都会被调用。

希望这会有所帮助。