我正在探索Javascript API for Office(适用于Office 2013),并遇到了一个奇怪的问题。我似乎无法将变量返回到函数链中。例如,API提供了一种方法来检查和查看当前与文档关联的所有绑定using this:
Office.context.document.bindings.getAllAsync(function (asyncResult) {});
我试图在函数中使用它来将数据作为变量,以便我可以调用某些绑定。
我可以在API调用的最内层函数内调用我的显示函数,并使用它来显示结果。我似乎无法向上返回这些数据。
我已尝试在API调用之外的包装函数中声明一个变量。我尝试过两次回复陈述。我觉得这应该有用:
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
我知道在最里面的函数里面,我有数据,因为我已经从内部调用了我的显示函数,并将绑定写入了页面。因此,我可以创建一个隐藏的句子,我填充然后阅读。我觉得那会是一个黑客攻击。
有没有更好的方法来返回变量?
答案 0 :(得分:0)
Benjamin Gruenbaum作为评论回答了这个问题,所以我在这里添加它是为了便于查找以防其他人遇到此问题。
您无法返回异步调用的响应 同步(它还没有),所以你用它调用一个方法 值,在该方法中,您可以使用其值 - 这是被调用的 延续传球风格。或者,您可以返回代理 对象而不是对象本身 - 然后在它的时候使用它 通过
then
方法准备就绪,这称为承诺
所以很遗憾,答案是无法完成。