如何从此函数返回值。我不得不写回调作为一种解决方法。我希望能够编写下面的实用程序函数,它将使用Excel.run()并将所需的值作为函数输出返回。
function currentSheetName() {
//How to return a value from this function. For eg: activeWorksheet.name
Excel.run(function (ctx) {
var activeWorksheet = ctx.workbook.worksheets.getActiveWorksheet();
activeWorksheet.load("name");
return ctx.sync().then(function(){
callback(activeWorksheet.name)
});
}).then(function() {
}).catch(function() {
});
};
答案 0 :(得分:2)
好问题!几种可能的解决方案。
一种解决方案是使用typescript和async/await
,并且能够完全解决问题。
另一个是在context.sync()
来电中设置传递变量,或在return
中设置.then
- 该值将通过。它也会流向Excel.run
的来电者,这样您就可以await
或.then(function(result) { ... })
来访问该值。
对于后者,请参阅“Building Office Add-ins using Office.js”一书中的以下屏幕截图(完全披露,我是该书的作者,但我认为你会从中学到很多,而且我没有个人因为我将100%的利润捐给慈善机构,所以从中获利。屏幕截图显示了.then
- s之间的传递值,但它只是从Excel.run
返回值的概念相同。
在使用TypeScript和async/await
方面,书中也有一堆指导(JS部分实际上在附录中,因为这本书反映了我个人观点,从TypeScript 2.0开始,特别是async/await
,通过TypeScript体验和使用我们的Office.js API 的最佳方式。