Javascript,localForage,使用 getter 在对象文字之间传递数组

Javascript, localForage, passing array between object literals with getter

我有以下对象文字,我试图在存储对象(使用 localForage)和视图对象之间传递 todoList 数组。

const store = {
  setUpStore() {
    this.todos = localforage.createInstance({
      name: 'myApp',
      storeName: 'todos'
    });
    this.completed = localforage.createInstance({
      name: 'myApp',
      storeName: 'completed'
    });
  },

// Code omitted for brevity

  get todoList() {
    const todoList = [];
    this.todos.iterate((value, key, iterationNumber) => {
      let item = {id: key, title: value.title};
      if (value.prioritized === true) {
        todoList.unshift(item);
      } else {
        todoList.push(item);
      }
    }).then(() => {
      console.log('Got todo list');
    }).catch((err) => {
      console.log(`There was an error: ${err}`);
    });
    return todoList;
  },
}

const view = {
  // Code omited for brevity

  displayTodos() {
    todoList = store.todoList;
    console.log(todoList); // This logs what appears to be an array
    todoList.forEach((item) => {
      // This doesn't work
      console.log(item.title);
    });
  }
}

当我在控制台中调用 store.todoList getter 时,我得到了一个可以使用的数组。 view.displayTodos() 方法中的 console.log(todoList) 似乎有效,但调用 forEach() 或在视图方法中对 todoList 进行任何其他类型的数组操作不起作用。这是怎么回事?

第一种方法应该是这样

get todoList() {
    const todoList = [];
    return this.todos.iterate((value,id) =>{
        let item = { id, title: value.title};
        if (value.prioritized === true) {
            todoList.unshift(item);
        } else {
            todoList.push(item);
        }
    }).then(() => {
        console.log('Got todo list');
        return todoList
    }).catch((err) => {
        console.log(`There was an error: ${err}`);
    });
},

在 'then' 中,我在 Promise 中返回我真正想要的数组。 第二种方法应该是这样

displayTodos() {
    store.todoList.then(arr=> arr.forEach((item) => {
        console.log(item.title);
    }))
}    

我使用的结果是 Promise,所以我必须在 'then' 内部工作才能看到数组