我有一个Firebase函数,可以将文件写入Firebase存储中:
var tempJSONObject = {
testing: "why are we testing",
anothertest: "constanttesting"
}
try {
const fileName = `storedjokes/81.json`
const file = bucket.file(fileName);
console.log('created file');
const writeStream = fs.createWriteStream(JSON.stringify(file));
console.log('created write stream');
var stringy = JSON.stringify(tempJSONObject);
console.log("stringy created");
await writeStream.write(stringy, (err) => {
console.log("writing started");
if (err) {
console.log(err.message);
} else {
console.log("data written");
}
});
} catch (e) {
console.log('error', e);
}
console.log('post write');
代码执行正常,但控制台可以打印
后写
从不打印
开始写作
.write()语句为什么不能正确执行,以及在完成之后如何执行之后的代码?
答案 0 :(得分:2)
您可以将函数调用包装在promise周围:
var tempJSONObject = {
testing: "why are we testing",
anothertest: "constanttesting"
}
try {
const fileName = `storedjokes/81.json`
const file = bucket.file(fileName);
console.log('created file');
const writeStream = fs.createWriteStream(JSON.stringify(file));
console.log('created write stream');
var stringy = JSON.stringify(tempJSONObject);
console.log("stringy created");
await new Promise(resolve => {
writeStream.write(stringy, (err) => {
console.log("writing started");
if (err) {
console.log(err.message);
} else {
console.log("data written");
}
resolve();
});
});
} catch (e) {
console.log('error', e);
}
console.log('post write');