Google AppMaker中的异步功能

时间:2019-01-14 08:39:15

标签: asynchronous google-bigquery google-app-maker

我有一个函数BigQueryGetEmail(),该函数可以从BigQuery查询请求者管理器信息。我调用代码以获取信息并将其传递给变量。但是问题在于,因为JS是单线程语言,所以我认为它在完成查询所需信息之前会跳过我调用BigQueryGetEmail()函数的代码。效果是,当我将其分配给变量时,确定它会返回错误,因为还没有数据。

我试图将变量赋值放在BigQueryGetEmail()的回调中,但仍然没有时间捕获数据。还尝试了异步功能,但在AppMaker上似乎不起作用。测试时,查询功能按预期方式工作。它返回请求者经理的电子邮件。

//run Query to get Manager email info base on requester email
var email = google.script.run.BigQueryGetEmail(emailRequester);

//assign email value to draft.email;
draft.Email = email;

//create record
createDatasource.createItem(function(createdRecord) { });

我希望查询将首先获取请求者管理者的电子邮件地址,然后在保存记录之前将值首先传递给draft.Email

1 个答案:

答案 0 :(得分:0)

客户端api google.script.run 具有故障处理程序和成功处理程序。要了解有关其工作原理的更多信息,请参阅official documentation

基本上,您需要重新组织代码,使其看起来像这样:

function successHandler(email){
    //assign email value to draft.email;
    draft.Email = email;

    //create record
    createDatasource.createItem(function(createdRecord) { });
}

function failureHandler(error){
    console.log(error);
}

//run Query to get Manager email info base on requester email
google.script.run.withSuccessHandler(successHandler).withFailureHandler(failureHandler).BigQueryGetEmail(emailRequester);