Typescript在promise中包装ActiveX函数调用或异步调用

时间:2016-06-27 15:24:11

标签: javascript angularjs typescript activex

我正在使用带有Typescript的Angular框架创建一个Intranet Web应用程序。

应用程序需要使用客户端的计算机,因此我实现了一些使用ActiveX技术调用的COM功能(我们使用Internet Explorer,因此工作正常)。

我有两个功能:

openApp - 将文件从服务器复制到本地计算机

getInstalledVersion - 从文件的本地傻瓜中读取版本信息

我想做的是调用openApp之后我想调用getInstalledVersion(获取新复制文件的版本信息)。显然我想在调用getInstalledVersion之前确保复制过程完成。

这听起来像是在Promise中包装openApp,或者只是在openApp完成后调用getInstalledVersion的其他方法。

有人能指出我如何实现这个目标吗?

以下现有代码:

export class AppService implements IAppService {

    private _appServiceClass: any;

    constructor() {
        this._appServiceClass = new ActiveXObject("BeaufortAppStoreClientProcessing.Services.AppServiceJsonWrapper");
    }

    openApp(app: IApp, sourceRootFolder: string, destinationRootFolder: string): void {
        var jsonApp = JSON.stringify(app);
        this._appServiceClass.OpenApp(jsonApp, app.AppType.AppTypeID, sourceRootFolder, destinationRootFolder);

    // Want to call getInstalledVersion here after openApp succeeds.

    }

    getInstalledVersion(app: IApp): string {
        var version: string;
        var appType = app.AppType.AppTypeID;
        switch (appType) {
            case 1:
                var jsonApp = JSON.stringify(app);
                version = this._appServiceClass.GetInstalledVersion(jsonApp).toString();
                break;
            case 2:
                version = "n/a";
                break;
            default:
                version = "Incorrect AppType";
                break;
            }
        return version;
    }
}

0 个答案:

没有答案