[英]How to download a file through FTP with a firebase function?
題:
不幸的是,我的函數在幾秒鍾內完成執行,而不是完全執行。 這顯然是因為監聽器被聲明為流式傳輸數據:據我所知,它們不是我可以等待的承諾。
如何讓我的 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)
}
})()
});
您需要承諾結果,以便模塊知道該值是異步的。 目前,您的回調未通知模塊任何內容,因此執行會立即退出,您將需要類似的格式
exports.fifteenMinutesData = functions
.runWith(runtimeOpts)
.pubsub
.schedule('*/15 * * * *')
.timeZone('Etc/UTC')
.onRun((context) => new Promise((resolve, reject) =>
{
});
你在哪里調用resolve(data);
對於成功路徑和reject(err);
對於所有錯誤執行路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.