在云函数中的定义里,有一个关于超时的概念,这里并不是程序实际运行的时间,而是一个预期运行的时间
比如一个程序跑下来仅用了 8ms 但是他一直在等待内部的异步操作执行完才会关闭,这里就是异步操作超时,导致整个请求超时。(20s是截止目前云函数最长运行时间)
console.log('======= start ===')
console.log(new Date().getTime()) // 1555601179634
db.collection("testCollection").get()
.then(res =>{
console.log('===第一次====')
console.log(new Date().getTime()) // 1555601179843
return timeout(5000)
})
.then(res =>{
console.log('===第二次====')
console.log(new Date().getTime()) // 1555601184847
return timeout(5000)
})
.then(res =>{
console.log('===第三次====')
console.log(new Date().getTime()) // 1555601189853
return timeout(5000)
})
.then(res =>{
console.log('===第四次====')
console.log(new Date().getTime()) // 1555601194853
return timeout(5000)
})
.then(res =>{
console.log('===第五次====')
console.log(new Date().getTime()) // 这里已经是超时区了
return timeout(5000)
})
console.log('======= end ===')
console.log(new Date().getTime()) // 1555601179642
// 封装的Promise的等待函数
function timeout(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}