适用于Office的Javascript API(2013) - 向上返回值

时间:2014-06-12 22:53:08

标签: javascript ms-office office-2013 javascript-api-for-office

目标:

我正在探索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

我知道在最里面的函数里面,我有数据,因为我已经从内部调用了我的显示函数,并将绑定写入了页面。因此,我可以创建一个隐藏的句子,我填充然后阅读。我觉得那会是一个黑客攻击。

问题:

有没有更好的方法来返回变量?

1 个答案:

答案 0 :(得分:0)

Benjamin Gruenbaum作为评论回答了这个问题,所以我在这里添加它是为了便于查找以防其他人遇到此问题。


  

无法返回异步调用的响应   同步(它还没有),所以你用它调用一个方法   值,在该方法中,您可以使用其值 - 这是被调用的   延续传球风格。或者,您可以返回代理   对象而不是对象本身 - 然后在它的时候使用它   通过then方法准备就绪,这称为承诺


所以很遗憾,答案是无法完成。