2016-12-07 14 views
1

Outlookアドインで約束を使用しようとしています。そして私はこれをドキュメントごとに試しています。ランタイムエラー:OfficeExtension.Promiseが定義されていません

return Promise.resolve(function() { 
     console.log("in promise"); 
    }).then(function() { 
     console.log("in promise then"); 
    }); 

Promise.resolve()もコンテキストヘルプに表示されています。私はそれを実行したときしかし、私はそれをランタイムエラーを取得私はoffice.jsの1.1.0.10を実行していますし、リポジトリで指摘しています「約束は未定義です。」:また

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script> 

、私は「と入力します新しいOfficeExtension "、Promiseはリストされていません。私は、 "IPromise"というインターフェースがあるとしか思えません。

現在のリリースでは約束はありますか?あるいは、私は別のリポジトリを指しているべきですか?

答えて

2

いくつかの問題がここにあります

  1. あなたはそのままPromiseを使用している場合は、IE 11のグローバルwindow.Promiseオブジェクトをパッチポリフィルのいくつかの並べ替えを必要とし、それ以前(上使用されるものですOfficeアドイン用のデスクトップ)。このようなライブラリの1つの例は、 "core-js"です。

  2. OfficeExtension.PromiseはExcelApi 1.2、WordApi 1.2、またはOneNote 1.1でのみ利用できます。 ["1.1"も同様に動作させるように取り組んでいます。つまり、 "新しい" 2016+ APIスタイルのウェーブをサポートするホストのいずれかで本質的に定義されるようになります。しかし、どちらの場合でも、Outlookは、着実にAPIを拡張し続けていますが、多少異なる(文書操作が集中しない)シナリオが存在するため、現在はOutlookでは機能しません。新しい2016年のAPIでもAPIの「Office 2013」

  3. IntelliSense(Visual StudioでJavaScript IntelliSense用にサイレントにダウンロードされるVSDOCとTypeScript用にDefinitelyTyped definition)は、すべてのホストに共通です。したがって、Outlookアドインの実行時にはサポートされなくても、OfficeExtensionが表示されます(また、WordまたはExcelが表示されます)。

あなたのケースでは特に、Promiseポリフィルを使用して#1をお勧めします。 OfficeExtension.Promiseをすべてのホストに含めるかどうかについてもチームと話し合っていきますが、そうすることに決めたとしても、来るべき時期になるでしょう。だから、#1はまだあなたの最善の策です。

関連する問題