Почему эта облачная функция занимает много времени? - PullRequest
0 голосов
/ 12 января 2019

Это очень простая облачная функция. Она обязательно что-то вернет («успешно»), тогда почему она занимает более 60 секунд, что приводит к ошибке TimeOut

exports.confirmOrder = functions.https.onCall(async (data, context) => { 

    await new Promise((res,rej)=>{

    return true;

    }).then(()=>{

      console.log("llllllllllllllllllllllllllllllllll");

    }).catch((err)=>{

      console.log(err);

    });

    return "successful";

      });

1 Ответ

0 голосов
/ 12 января 2019

Функция вызываемого облака выполняется, когда она возвращает ответ вызывающему. Если вы не можете синхронно вернуть значение, вы должны вернуть обещание, которое решает со значением.

Ваш код не возвращает никакого ответа (ни значения, ни обещания), поэтому облачные функции не могут знать, когда это будет сделано. В этом случае он позволяет ему работать как можно дольше / настраиваться (по умолчанию 60 секунд).

Это должно быть намного ближе к тому, что вы хотите:

exports.confirmOrder = functions.https.onCall(async (data, context) => { 

    return new Promise((resolve,reject)=>{
      return true;
    }).then(()=>{
      console.log("llllllllllllllllllllllllllllllllll");
      resolve();
    }).catch((err)=>{
      console.log(err);
      reject()
    });
});

Обратите внимание, что new Promise() совсем не идиоматичен в коде облачных функций, поскольку большинство библиотек / API, которые вы вызываете, уже возвращают обещания. Я предполагаю, что вы просто тестируете, как работают обещания, учитывая природу кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...