dbr*_*dbr 7 javascript asynchronous google-apps-script
我目前正在生成的 Google Apps 脚本中的某些代码需要一个对象来完成,其中一个属性由异步请求的结果设置。这个对象,特别是这个属性,稍后会被用到。但是,由于在需要该属性的函数运行时请求尚未返回,因此它们没有正确评估。我的代码如下:
function Thing(val) {
var self = this
var createSuccess = function(data) {
self.foo = data;
}
var init = function(val) {
google.script.run.withSuccessHandler(createSuccess).serverFunc(val);
};
init(val);
}
function objStuff() {
var foobar = new Thing('bar');
// Do stuff with foobar.foo
}
objStuff();
Run Code Online (Sandbox Code Playgroud)
目前使用 foobar.foo 的东西不能正常工作,因为脚本在继续之前没有等待脚本的返回值。
在继续执行脚本的其余部分之前,有没有一种方法可以等待 foo 属性通过异步请求进行评估?
您可以将回调作为参数添加到构造函数:
function Thing(val, cb) {
var self = this
var createSuccess = function(data) {
self.foo = data;
cb(); // this gets called when data is ready
}
var init = function(val) {
google.script.run.withSuccessHandler(createSuccess).serverFunc(val);
};
init(val);
}
function objStuff() {
var foobar = new Thing('bar', function() {
// Do stuff with foobar.foo
});
}
objStuff();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3249 次 |
| 最近记录: |