Самый простой способ подождать разрешения серверной функции Google - PullRequest
1 голос
/ 15 октября 2019

Вызов функции на стороне сервера, но нужно дождаться следующего синтаксиса.

что я сделал:

async function func(){
   await google.script.run.withSuccessHandler(myFunc).serverFunc();
   console.log("done");
}
func();

как выполнить console.log после разрешения функции на стороне сервера?

1 Ответ

2 голосов
/ 15 октября 2019

Как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Шаблон 1:

В этом шаблоне после запуска serverFunc выполняется myFunc. В это время console.log("done") выполняется в myFunc.

function myFunc() {
   console.log("done");
}

function func(){
   google.script.run.withSuccessHandler(myFunc).serverFunc();
}

func();

Шаблон 2:

В этом шаблоне использовался Promise. Когда вы запускаете func(), вы можете видеть ok и done по порядку.

function myFunc() {
  return "ok";
}

async function func() {
  const res = await (() => new Promise(r => google.script.run.withSuccessHandler(() => r(myFunc())).serverFunc()))();
  console.log(res);
  console.log("done");
}

func();

Примечание:

  • Если вы тестируете вышеуказанные образцы, пожалуйста, установите функциюиз serverFunc() на стороне Google Apps Script.
  • Это простой пример сценария. Поэтому, пожалуйста, измените это для вашей реальной ситуации.

Ссылки:

Если это не то направление, которое вы хотите, я прошу прощения.

Добавлено:

Если вы хотите использовать значения из serverFunc в myFunc, как насчет следующего примера сценария?

Пример сценария:

function myFunc(nice) {
  doStuffs(nice);

  return "ok";
}

async function func() {
  const res = await (() => new Promise(r => google.script.run.withSuccessHandler((e) => r(myFunc(e))).serverFunc()))();
  console.log(res);
  console.log("done");
}

func();
  • В этом сценарии возвращаемое значение из myFunc может быть получено с помощью res.
...