Я пытаюсь вставить кучу событий с помощью Google API Calendar и получить идентификаторы вставленных событий, но я не могу получить ответ. Я не знаю, что делаю не так.
Вот что я делаю:
GetEvents //fetchs the user events
.then(insertEvents)
.catch(function (reason) {
console.info(reason);
});
function insertEvents(events) {
var eventsToInsert = [];
if (events.length) {
for (evnt of events) { //Here im creating an array of //"promises" that return the insert method of google API
eventsToInsert.push(insertEvent(evnt.titulo, evnt.lugar, evnt.fechainicio, evnt.fechafin, evnt.tipologia,
evnt.id))
}
console.info('Events ti insert');
console.info(eventsToInsert);
//And here im trying the return the resolved data by the all //promises, but it returns an empty array always
Promise.all(eventsToInsert.map(function (eventToInsert) {
return eventToInsert.execute(function (event) {
console.info('event', event);
return event.id;
});
})).then(function (res) {
console.info(res);
});
}
}
заранее спасибо
В обычном случае здесь не нужны две петли. Так что нам явно нужно больше знать о том, что вы делаете и чем занимаетесь.
Что такое events? Если это массив, ваш первый цикл с использованием for-in - это не совсем правильно. Тебе бы лучше с var eventsToInsert = events.map(function(evnt) { return ... });
Я сделал ошибку там, а также в for loop я неправильно указал имя переменной eventsToInsert вместо events. Функция insertEvent возвращает объект запроса API Google, и для выполнения вставки он должен быть выполнен.
Воспользуйтесь ссылкой «изменить», чтобы исправить любые ошибки в вашем вопросе.
@ T.J. Crowder благодарит вас за ответы. Я хочу вставить n событий в календарь Google и дождаться его ответа, а затем выполнить другие действия. Но я не могу дождаться или получить ответ, потому что методы Google асинхронны.
Мне удалось решить эту проблему. Оберните метод google api insert в обещание и разрешите его в методе execute.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Что возвращает
insertEvent? Вы сказали, что «создаете массив обещаний», но позже вы используете методexecuteдля этих записей; У обещаний нет методаexecute.