Soy nuevo en javascript y estoy tratando de obtener un montón de tareas de diferentes proyectos de todoist y tratando de asignar una etiqueta para esas tareas.
const task_list = {}; for (let id of project_id) { api.getTasks({ projectId: id, filter: "(today | overdue | p1) & !subtask" }) .then((tasks) => { Object.assign(task_list, { id: tasks }); console.log(task_list)}) .catch((error) => console.log(error)) } for (let id of project_id) { console.log(id) console.log(task_list.id) }Este es actualmente mi borrador para el código. El archivo console.log en el bucle for en la parte inferior está imprimiendo sin definir, pero el archivo console.log detrás de Object.assign puede imprimir el resultado correcto.
Por favor ayuda.
Está reemplazando la clave de identificación del objeto task_list para cada iteración, porque Object.assign copia las claves y los valores de un objeto al objeto de destino, que es task_list en su caso.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
si está intentando crear una tabla hash para realizar un seguimiento de todas las tareas por ID
podrías mutar la lista de tareas y asignarla por id.
task_list[id] = taskso reemplace la task_list original usando Object.assign
const new_task_list = {} new_task_list[id] = tasks task_list = Object.assign(task_list, new_task_list)o usando la sintaxis es6
Object.assign(task_list,{[id]:tasks})dentro de su ciclo posterior puede acceder al valor de la tarea usando la clave de identificación
for (let id of project_id) { console.log(task_list[id].id) }Además, el último ciclo imprimirá un objeto vacío porque se ejecutará antes de que api.getTasks complete la solicitud, deberá crear una matriz para guardar todas las promesas y luego usar
Promise.all(promises).then(() => { // your loop here })https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all