ゴール:
Office用 (Office 2013 用)のJavascript API を調査していて、奇妙な問題に遭遇しました。関数のチェーンで返される変数を取得できないようです。例として、API は、これを使用して、現在ドキュメントに関連付けられているすべてのバインディングをチェックして表示する方法を提供します。
Office.context.document.bindings.getAllAsync(function (asyncResult) {});
特定のバインディングを呼び出すことができるように、関数でそれを使用してそのデータを変数として取得しようとしています。
問題:
API 呼び出しの最も内側の関数内で表示関数を呼び出し、それを使用して結果を表示できます。ただし、そのデータを上に戻すことはできないようです。
私が試したこと:
API呼び出しの外で、ラッパー関数で変数を宣言しようとしました。2 つの return ステートメントを試してみました。私はこれがうまくいくように感じます:
function getBindings () {
var bindingString;
Office.context.document.bindings.getAllAsync(function (asyncResult) {
for (var i in asyncResult.value) {
bindingString += asyncResult.value[i].id;
}
});
return 'Bindings: '+bindingString[0];
}
残念ながら、それはこれを返すだけです:
Bindings: undefined
一番内側の関数内にデータがあることはわかっています。これは、内部から表示関数を呼び出し、バインディングをページに書き込んだためです。したがって、隠し保持 ` を作成して、それを埋めてから読み取ることができます。私はそれがハックになるように感じます。
質問:
変数を返すより良い方法はありますか?