Проблема в том, что вы пытаетесь await
массива. Это не делает то, что вы ожидаете.
Когда объект, переданный в await
, не является Promise, await
просто возвращает значение as-is немедленно, а не пытается его решить. Так как вы передали await
массив (объектов Promise) здесь вместо Promise, значение, возвращаемое await, - это просто массив, который имеет тип Promise
.
Что вам нужно сделать здесь вызывается Promise.all
в массиве, возвращаемом map
, чтобы преобразовать его в одно обещание до await
.
Согласно документам MDN для Promise.all
:
Метод
blockquote>Promise.all(iterable)
возвращает обещание, которое разрешает, когда все обещания в итерабельном аргументе разрешены или отклоняются с учетом причины, по которой было отклонено первое обещание, которое отклоняетИтак, в вашем случае:
var arr = [1, 2, 3, 4, 5]; var results: number[] = await Promise.all(arr.map(async (item): Promise
=> { await callAsynchronousOperation(item); return item + 1; })); Это решит конкретную ошибку, с которой вы сталкиваетесь здесь.
Вы должны добавить «POST» в принятые методы объявления маршрута. Вы поместили его в функцию.
@app.route('/test', methods=['GET', 'POST'])
def test():
if request.method=='GET':
return('<form action="/test" method="post"><input type="submit" value="Send" /></form>')
elif request.method=='POST':
return "OK this is a post method"
else:
return("ok")