У меня есть облачная функция, которая используется для отправки электронных писем, и она размещена в дочернем приложении Firebase.Время ожидания установлено равным 60 секундам, и оно вызывается через запрос https.Однако, когда запрос сделан из пользовательского интерфейса, он вызывается каждые 60 секунд, а затем истекает время ожидания, даже если отправляется электронное письмо.
Component.ts - действие отправки формы
onSubmit() {
this.cloudService.sendEmail(
this.model.name,
this.model.email,
this.model.message
);
}
CloudFunctionService.ts
export class CloudFunctionService {
constructor(private http: HttpClient) {}
sendEmail(name, email, message) {
const url = 'https://url/path/to/function';
const params = new HttpParams()
.set('name', name)
.set('email', email)
.set('message', message);
return this.http.get(url, {params}).toPromise()
.then(res => {
// this line never gets hit
console.log(res);
})
.catch(err => {
// this line never gets hit
console.log(err);
});
}
}
index.ts - машинописный код для функции
import * as functions from 'firebase-functions';
import * as sgMail from '@sendgrid/mail';
import * as cors from 'cors';
const corsHandler = cors({origin: true});
export const sendContactMail = functions.https.onRequest((request, response) => {
corsHandler(request, response, () => { console.log('cors handled')});
const SENDGRID_API_KEY = functions.config().sendgrid.key;
sgMail.setApiKey(SENDGRID_API_KEY);
sgMail.setSubstitutionWrappers('{{','}}');
const msg = {
to: 'some@email.com',
from: 'some.other@email.com',
templateId: 'mytemplateid',
substitutions: {
name: request.query.name,
email: request.query.email,
message: request.query.message
}
};
sgMail.send(msg).then((res) => {
console.log(res);
}).catch(err => {
console.log(err);
});
response.send();
});
Журнал функций Firebase
Фантом перезапускается каждые 60 секунд только для повторного тайм-аута
Даже если я получаю электронные письма от функции