Время решило эту проблему.
Сегодня я написал 2 очень простых облачных функции: 1) Родитель 2) Ребенок с родителем, вызывающий ребенка в обработчике с использованием axios .
Я использовал тот же подход Promise и yield (и синтаксис), что и в вопросе, и он, похоже, сразу сработал.
Озадаченный, я вернулся к исходному коду, и он работал с предыдущего развертывания.
Похоже, он испытывал трудности с запуском (в прошлый раз я дал ему час), но сегодня прошло 12.
Резюме:
- Нет проблем с вызовом другихОблачные функции с axios.
- Этот синтаксис хорош
- Для развертывания требуется больше времени, чем ожидалось (на этот раз больше часа).Я подозреваю, что это исключение, а не норма.
- Облачные функции все еще в бета-версии!
Вот мои тестовые функции:
Ребенок:
//handler
export const handlerSimple = (req, res) => {
if (req.method === 'GET') {
return res.json({
"code": "200",
"message": "Success",
"body": "This is child responding"
})
}
}
Родитель:
require('dotenv').config()
var Promise = require('bluebird')
import axios from 'axios'
let getChildResponse = (req) =>{
let childUrl = [CHILD_CF_URI]
return axios.get(childUrl, {
}).then(response => {
return response.data
})
.catch(err => {
return false
})
}
//handler
export const handlerSimple = (req, res) => {
if (req.method === 'GET') {
Promise.coroutine(function*() {
let response = yield getChildResponse(req)
if(response == false){
return res.json({
"code": "400",
"message": "Error",
"body": "Axios call to child failed"
})
}else{
return res.json({
"code": "200",
"message": "This is parent responding, child in body",
"body": response
})
}
})()
}
}