Ответ, данный TLP, демонстрирует Обещание цепочки и будет работать для вас здесь.Тем не менее, я объясню немного больше о том, что происходит, и предоставлю альтернативный ответ.
Сначала давайте разберемся, почему ваш код не выполняет то, что вы хотите:
for(var i=0; i < productIds.length; i++) {
return queryObject.get(productIds[i]).then(//handle result)
}
Вы хотитекод для запуска каждого productId;однако вы говорите, что код должен возвращаться, выходя из цикла for, в самой первой итерации.Подумайте о следующем:
for(var i=0; i < productIds.length; i++) {
return productIds[i];
}
Удаление обещаний с картинки облегчает обнаружение ошибки.Этот цикл for эквивалентен:
return productIds[0];
Аналогично, ваш код эквивалентен:
return queryObject.get(productIds[0]).then(//handle result)
Если вы видите здесь ошибку, сейчас я укажу на небольшую ошибку вваш мыслительный процесс, который привел вас сюда.В своем посте вы говорите:
Я возвращаю обещание, возвращенное методом get (), примерно так:
Вы ссылаетесь на одно обещание, возвращенное из "the"вызовите метод get (), но вы на самом деле надеетесь вызвать метод get () много раз, создавая много обещаний .
Если все это имеет смысл, тогда ваш следующий шаг - решить:
- Вам нужно запустить код после того, как ВСЕ обещания будут выполнены (при этом используется полный список найденных данных).
- Вам нужно запускать код только для выполненного обещания (в котором используются только данные, полученные из конкретного обещания).
Вы достигли # 1, используя цепочку обещаний, как показано в TLPответ.Вы можете достичь # 2, просто удалив «return» из своего кода, а именно:
for(var i=0; i < productIds.length; i++) {
queryObject.get(productIds[i]).then(//handle result)
}