我是从word文档中获取数据并将其设置为我的javascript的全局用途。但我使用以下代码
得到此错误您无法将正文内容设置为全局变量
var bodyText;
getData();
function getData() {
Word.run(function (context) {
var body = context.document.body;
context.load(body, 'text');
return context.sync().then(function () {
bodyText = body.text;
});
});
console.log(bodyText);
}
console.log(bodyText);
答案 0 :(得分:2)
您的第一个console.log是无法访问的代码,因为该方法在到达该行之前返回。另一个问题是Word.run
是异步的,并且在调用第二个console.log时没有完成,所以第二个返回undefined。以下代码有效:
var bodyText;
getData();
function getData() {
return Word.run(function (context) {
var body = context.document.body;
context.load(body, 'text');
return context.sync()
.then(function () {
bodyText = body.text;
console.log(bodyText); //Completes second and works
});
});
// console.log(bodyText); // Unreachable code
}
console.log(bodyText); // Completes first and returns undefined
您可以通过将第二个console.log置于与then
的调用链接的getData
方法中来控制同步:
var bodyText;
getData().then(function () {
console.log(bodyText); // Completes second and works
});
function getData() {
return Word.run(function (context) {
var body = context.document.body;
context.load(body, 'text');
return context.sync()
.then(function () {
bodyText = body.text;
console.log(bodyText); //Completes first and works
});
});
}