首页 > 解决方案 > 在移动到下一行代码之前,如何让节点 js 异步等待等到进程完成?

问题描述

我知道有人问过这个问题,但答案不适合我的情况

下面的代码在进入下一行代码之前没有等待。我究竟做错了什么?

getStatistics应该等到进程完成后再执行getTileGeoJsonBB

await getStatistics();  
let bb = getTileGeoJsonBB(tileInfo);

异步功能:

async function getStatistics() {
        tileStats = await converter.calculateStatistics(tilePath);
}

上面的代码converter.calculateStatistics调用了这个异步函数

module.exports.calculateStatistics = async function (inputFilePath) {
    const pipeline = promisify(stream.pipeline);
    let png = new PNG({})
    return new Promise((resolve) => {
        fs.createReadStream(inputFilePath)
            .pipe(png)
            .on("parsed", () => {
                // do parsing logic
                resolve(getTileStatistics(png))
            })
    })
}

let getTileStatistics = function (png) {
    stats = {};
    stats.minHeight = Number.MAX_VALUE;
    stats.maxHeight = Number.MIN_VALUE;
return stats

在此处输入图像描述

标签: node.jsasync-await

解决方案


推荐阅读