首页 > 解决方案 > 如何在节点js中使流同步?

问题描述

我在 orderer 中调用某个函数。这些函数异步工作,不要等待进程完成,但我想让它同步。请告诉我应该怎么做。

下面是函数

 getMetaData(url).then((a) => {
        console.log("final a="+a)
        return a
    });



function getMetaData(url) {
    console.log("In getmetadata");
    return new Promise((resolve, reject) => {
        request({ url, encoding: null }, (err, resp, buffer) => {
            console.log("In request response");
            pdf(buffer).then(function (data) {
                var mdata = data.metadata;
                var filtered = {}
                for (key in mdata._metadata) {
                    if (key.match(/^pdfx:Blockchain/)) filtered[key] = mdata[key];
                }
                if (Object.keys(filtered).length === 1) {
                    isMetaData = true
                }
                a.isMetaData = isMetaData
                resolve(a);
                console.log("a value set");

            });

        });
    });
}
console.log("In the end")

下面是输出

In getmetadata
In the end
In request response
a value set
final a=[object Object]

但我想In the end最后打印出来,它应该等待整个过程完成。

标签: javascriptnode.jsnode-modulessynchronous

解决方案


推荐阅读