簡體   English   中英

在條件是同步還是異步的情況下調用函數?

[英]Calling function inside if condition is synchronous or asynchronous?

我有一種方法:

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')
}

如果函數是否返回一些錯誤,則可以使用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函數失敗,則可以按照所需的任何方式處理錯誤。 此行為始終是同步的,並且每次都會被調用。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM