題:
不幸的是,我的函式在幾秒鐘內完成執行而不是完全執行。這顯然是因為監聽器被宣告為流式傳輸資料:據我所知,它們不是我可以等待的承諾。
我如何才能完全執行我的 firebase 功能?
代碼:
exports.fifteenMinutesData = functions
.runWith(runtimeOpts)
.pubsub
.schedule('*/15 * * * *')
.timeZone('Etc/UTC')
.onRun((context) => {
return (async() => {
try {
const Client = require('ftp');
const c = new Client();
c.connect({
host: "...",
user: "..."
});
c.on('ready', async function () {
c.get('text.txt', async function (err, stream) {
if (err)
throw err;
var content = '';
stream.on('data', function (chunk) {
content = chunk.toString();
});
stream.on('end', function () {
(async () => {
try {
let data = content;
//etc....
}
catch(err) {
console.log("ERR: " err);
}
})()
})
})
})
}
catch(err) {
console.log("ERR: " err)
}
})()
});
uj5u.com熱心網友回復:
您需要承諾結果,以便模塊知道該值是異步的。目前,您的回呼未通知模塊任何內容,因此執行會立即退出,您將需要類似的格式
exports.fifteenMinutesData = functions
.runWith(runtimeOpts)
.pubsub
.schedule('*/15 * * * *')
.timeZone('Etc/UTC')
.onRun((context) => new Promise((resolve, reject) =>
{
});
您在何處呼叫resolve(data);成功路徑和reject(err);所有錯誤執行路徑。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/316636.html
標籤:javascript 节点.js 火力基地 谷歌云功能 FTP
