Я использую массив отложенных объектов. Этот массив имеет размер, поэтому он может иметь один или несколько отложенных объектов. Проблема возникает, когда обрабатывается вызов ajax. Код, как следующие:JQuery - массив обещаний и ответ формата
$.when.apply($, array_ajax_calls).then(...)
При использовании .when с .Нанесите, если массив имеет только один объект обещание, то ответ является массивом с тремя объектами:
// Return the object, the status and the jqXHR object
[Array[1] , "success", Object ]
Если массив содержит более одного объекта, тогда он возвращает массив ответов, подобных предыдущему.
[
[Array[1] , "success", Object ],
[Array[1] , "success", Object ],
...
]
Как вы видите, ответ отличается. Первый возвращает массив с тремя значениями. Второй возвращает массив массивов, который содержит три значения. Это заставляет меня проверять, был ли вызов ajax выполнен для одного или нескольких объектов и изменить логику, поскольку ответ имеет другой формат.
Я не понимаю, почему я должен получить другой ответ. Если бы я прошел множество обещаний (даже если есть только один обещание) к .Не (...) функция Я бы ожидать, чтобы получить:
[ [Array[1] , "success", Object ] ]
вместо
[Array[1] , "success", Object ]
ли есть ли способ получить тот же формат ответа?
Если вы передаете массив, чтобы .when, как вы сказали в своем ответе, это будет рассматриваться как разрешенное обещание, и поэтому ответ будет массивом, который содержит неразрешенные обещания. – kitimenpolku
@kitimenpolku, я не уверен, что понял ваш комментарий. Мы не передаем массив в '$ .when()', мы 'apply()' вводим массив в функцию, что приводит к тому, что элементы массива передаются как отдельные аргументы в '$ .when () '. –
Вы правы, извините – kitimenpolku