Вам необходимо использовать функцию Promise.all
, где вы помещаете свой массив обещаний
var array1 = [1, 4, 9, 16];
// pass a function to map
const test = async () => {
const map1 = await Promise.all(array1.map(async x => 'hi'));
return map1;
}
test().then((data) => {
console.log(data)
});
ожидаемый вывод: Array ['hi', 'hi', 'hi', 'hi']
blockquote>
Было бы лучше возвратить строку И булевскую переменную (как в заголовке) вместо того, чтобы возвратить строку ИЛИ булевскую переменную. Вам не придется выяснить то, что означает возвращаемое значение. Это должно быть полностью явно, и ортогональные проблемы должны быть разделены на различные переменные.
(okay,value) = get_some_input(blah);
if (okay): print value
Я склонен не возвращать кортежи много, потому что это чувствует себя забавным. Но это совершенно допустимо, чтобы сделать так.
Возврат "Ни одного" является допустимым решением, уже упомянутым здесь.
Разве это не более подошло бы для возврата a None
вместо False
?
Я полагаю, что православный дизайн Python не должен был бы возвращать Ни один. В руководстве говорится:
Ничего
Этот тип имеет единственное значение. Существует отдельный объект с этим значением. К этому объекту получают доступ через встроенное имя Ни один. Это используется для выражения отсутствия значения во многих ситуациях, например, это возвращается из функций, которые ничего явно не возвращают. Его значение истинности является ложью.
Вы могли возвратить строку, если бы она прибыла вовремя, или повысьте подходящее время указывающего исключения.
Удобная вещь состоит в том, чтобы возвратить пустую строку в этом случае.
Помимо пустой строки в Python оценит ко Лжи так или иначе. Таким образом, Вы могли назвать его как:
if Myfunc(s, timeout):
print "success"
Дополнение: Как указано S.Lott истинный Pythonic путь не состоит в том, чтобы возвратить Ни один. Хотя я выбираю к возвращаемым строкам в строке связанный funcs. Вопрос предпочтения действительно.
Также я предполагаю, что вызывающая сторона Myfunc только заботится о том, чтобы заставлять строку управлять на - пустой или нет. Если вызывающая сторона должна проверить о проблемах тайм-аута и т.д. лучше использовать исключения или возврат Ни одного.
Для добавления к точке Частоты ошибок по битам Вы могли бы хотеть принять что-то еще во внимание. При использовании пустой строки или Ни одного Вы оставляете дверь открытой для ошибок "немого" разнообразия. С другой стороны, при повышении исключения Вы вызываете выполнение любой операции, работает, чтобы быть прерванным.
Например, рассмотрите следующий код:
result = MyFunc(s, timeout)
if result[0] == 'a':
do_something()
Это повысит исключение, если приведенная к таймауту операция и получила или пустую строку или Ни один. Таким образом, необходимо было бы изменить это на:
result = MyFunc(s, timeout)
if result and result[0] == 'a':
do_something()
Эти виды изменений имеют тенденцию складывать и делать Ваш код более трудным понять.
Конечно, я уверен, что Ваш ответ на это будет чем-то вроде, "Я не сделаю этого" или, "которого не произойдет", к которому мой ответ, "Даже если Вы не столкнетесь с ним с этой функцией, то Вы будете в конечном счете при создании привычки к выполнению этого". Эти виды ошибок являются почти всегда результатом угловых случаев, о которых Вы обычно не думаете.
Возможно, при возврате кортежа как (Ложь, Ни один) и (Правда, тест), это было бы лучше, поскольку можно оценить их separatedly и не добавить ненужную сложность.
Править: Возможно, строка, которая появилась на последовательном порте, "" (возможно, ожидаемый), так возвращение True может сказать, что прибыло тот путь.
Это - классический вариант использования для генераторов Python. yield
ключевое слово обеспечивает простой способ выполнить итерации по дискретным наборам, не возвращая все это сразу:
def MyFunc(s, timeout) :
test = get_some_input(timeout)
while test.endswith(s)
yield test
test = get_some_input(timeout)
for input in MyFunc(s, timeout):
print input
Ключ здесь нет никакого возвращаемого значения для определения конца входа; вместо этого, Вы просто достигаете конца итератора. Больше информации о генераторах здесь.