Angular2 - 使长时间运行的进程异步运行(不是HTTP或JSONP等)

时间:2016-12-23 18:53:36

标签: angular asynchronous typescript promise observable

我正在做一些似乎不典型的事情 - 我正在编写一个浏览器应用程序,它本身会进行大量繁重的处理,而不是将该工作发送到服务器并等待响应。基本上,用户选择我的应用程序随后读入的文件(从不将其发送到服务器)并对其进行大量处理。根据文件的大小,此处理可能需要2到10秒。当你调用的函数为你设置P或O时,我找到了如何使用Promises和Observables的例子(如Http.get())。

但是,如果要异步运行的进程是应用程序内部的代码,该怎么办?我成功地在我的服务中创建了一个返回Promise的方法:

// these methods both defined inside my service class:
loadAsync(fileBuffer: string): Promise<MyObject> {
  return Promise.resolve(this.loadFile(fileBuffer));
}

loadFile(fileBuffer: string):MyObject {
  // long running function
  return object;
}

但是当我使用控制台日志消息来查看正在发生的事情时,很明显我的promise包装函数没有像我需要的那样异步运行loadFile方法。

作为背景,我正在使用: - angular-cli 1.0.0-beta.24 - 棱角2.3.1 - typescript 2.0.3 - zone.js 0.7.2 在Windows 7 64位

0 个答案:

没有答案