我正在做一些似乎不典型的事情 - 我正在编写一个浏览器应用程序,它本身会进行大量繁重的处理,而不是将该工作发送到服务器并等待响应。基本上,用户选择我的应用程序随后读入的文件(从不将其发送到服务器)并对其进行大量处理。根据文件的大小,此处理可能需要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位
上