Вы можете определить переменную вне функции обратного вызова и изменить ее в конце функции обратного вызова. Состояние этой переменной покажет, завершен ли обратный вызов.
let isCallbackExecuted = false;
let abcCallback = () => {
// do something
isCallbackExecuted = true;
};
Promise.resolve().then(abcCallback);
// isCallbackExecuted is true if callback is finished
"a и b или c" идиома была каноническим способом выразить троичную арифметику, если в Python, прежде чем PEP 308 был записан и реализован. Эта идиома перестала работать, ответ "b" является самой ложью; для поддержки общего случая Вы могли записать
return (a and [b] or [c])[0]
Альтернативный способ записать его был
return (b,c)[not a]
который, с введением типа bool, мог быть переписан как
return (c,b)[bool(a)]
(в случае, если это не ясно: преобразование в bool и не оператор, необходимы если не известный уже быть bool),
Сегодня, синтаксис условного выражения должен использоваться, если вещью должно быть выражение; еще я рекомендую использовать если оператор.
Необходимо читать Используя и - или прием (разделите 4.6.1) Погружения В Python Mark Pilgrim. Оказывается, что и - или прием имеет главные ловушки, о которых необходимо знать.
Тот код является большим fugly и умный для моих вкусов, но я предполагаю, что нет ничего неправильно с ним по сути. Я думаю, что это - действительно просто случай, "заставляют все это поместиться в одну строку" синдром.
Я лично выбрал бы первую форму все же.
Нет, это не.
У меня был так или иначе подобный вопрос на днях.
если конструкция
val if cond else alt
Не очень приветствовалось (по крайней мере, ТАКИМ ОБРАЗОМ сообщество), и предпочтительный был:
if cond:
val
else:
alt
Можно получить собственное заключение.:)
Черт. Не читаемый вообще. Для меня pythonic означает легкий читать.
return isUp and "Up" or "Down"
Звуки что-то Вы сделали бы в жемчуге.