Сегодня я обнаружил ошибку в своем коде, которая приводит к возможному повторному вызову, выполняемому более одного раза. Предполагаемое использование try ... catch предназначалось для операции JSON.parse (); однако сразу после этого произошла ошибка внутри самого обратного вызова.
var body='{}';
var callback=function (arg){
console.log('callback executed with arg='+arg);
arg? pack_michael(): pack_jolly();
}
try {
JSON.parse(body); //if JSON parse successful should callback once with true argument
callback(true);
} catch (e){
callback(false); //if JSON parse fails should callback once with false argument
}
Приведенный выше код приводит к двойному обратному вызову, который печатает это:
callback executed with arg=true
callback executed with arg=false
Я могу подумать о некоторых уродливых решениях, таких как создание переменной и проверка, произошла ли ошибка, или вложение еще одной ненужной попытки ... поймать, но нет ли какого-нибудь изящного решения, чтобы справиться с этим?