【问题标题】:How invoke class method into the async method function如何将类方法调用到异步方法函数中
【发布时间】:2021-12-10 05:21:01
【问题描述】:

我有一个错误,当我将 handleRenderPage 方法调用到异步方法时,我得到了错误: model.js:83 Uncaught (in promise) TypeError: this.handleRenderPage is not a function

我使用 MVC 编写待办事项项目,在模型类中我使用 handleRenderPage 方法发送待办事项列表数组,我使用 downloadTask 从服务器获取待办事项列表并将其发送到视图类 这是异步函数:

  downloadTask = async() => {
    const url = 'http://localhost:9090/download';
    const res = await fetch(url);
    const data = await res.json();
    this.tasksList = data;
    console.log(this.tasksList);
    //down is the method 
    this.handleRenderPage(this.tasksList);
  }

我在课堂外调用了这个函数:

downloadBtn.addEventListener('click', () => {  
  const model = new Model();
  model.downloadTask();
})

当用户点击下载 btn 应用程序时应该从服务器呈现待办事项列表

【问题讨论】:

  • 嗨!请使用 minimal reproducible example 来更新您的问题,以展示问题,最好是使用 Stack Snippets([<>] 工具栏按钮)的 runnable 问题; here's how to do one。 (您需要使用setTimeout 或其他东西来模拟ajax,链接中的详细信息。)
  • 旁注:由于你没有对downloadTask 返回的承诺做任何事情,你需要确保你永远不允许它拒绝它的承诺。简单的方法是将所有代码包装在try/catch 中,并在catch 块中处理任何错误。
  • 请发布您的Model 课程的完整代码。它有handleRenderPage 方法吗?
  • 是的:```bindRenderPage = (handleRenderPage) => { this.handleRenderPage = handleRenderPage; this.filterTasks(this.status); };

标签: javascript model-view-controller


【解决方案1】:

因为 this.tasklist 是未定义的,你应该在 View 中调用它,然后控制器在模型中获取信息并将其发送到模型模块

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    相关资源
    最近更新 更多