admin管理员组文章数量:1415420
Some code in Google Apps Script I am currently producing has a need for an object to be pleted with one of the properties being set by the result of an async request. This object, and specifically, this property are then used later down the line. However, because the request has not returned by the time the functions needing that property run, they are not evaluating properly. My code is as follows:
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();
Currently the stuff using foobar.foo does not work correctly, as the script has not waited for the return value of the script before proceeding.
Is there a way I can wait for the foo property to be evaluated with the async request before proceeding with the rest of my script?
Some code in Google Apps Script I am currently producing has a need for an object to be pleted with one of the properties being set by the result of an async request. This object, and specifically, this property are then used later down the line. However, because the request has not returned by the time the functions needing that property run, they are not evaluating properly. My code is as follows:
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();
Currently the stuff using foobar.foo does not work correctly, as the script has not waited for the return value of the script before proceeding.
Is there a way I can wait for the foo property to be evaluated with the async request before proceeding with the rest of my script?
Share Improve this question edited Oct 3, 2021 at 23:43 Wicket 38.8k9 gold badges80 silver badges195 bronze badges asked Jun 4, 2017 at 21:55 dbrdbr 6891 gold badge8 silver badges22 bronze badges 02 Answers
Reset to default 6You can add a callback as a parameter to the constructor:
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();
My reendation would be to use the events module if you are making use of nodejs since it allows you to create an event listener.
So you could do something like
eventEmitter.on('listener_key', function(){
//your code to be executed after the event
});
funtion emitStuffToListener(){
eventEmitter.emit('listener_key');
}
EDIT: sorry I missread the post but you can still do event oriented development with Google Apps Event Objects
本文标签: javascriptWaiting for async request to return before proceeding Google Apps ScriptStack Overflow
版权声明:本文标题:javascript - Waiting for async request to return before proceeding Google Apps Script - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745235798a2649031.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论