【问题标题】:How do I make the IPFS add await wait before proceeding?如何让 IPFS 在继续之前添加等待等待?
【发布时间】:2021-04-02 16:40:30
【问题描述】:

Await 不等待 IPFS 添加函数。

我正在尝试将文件添加到IPFS,然后输出与HASH对应的文件名的JSON。

但是 await 永远不会等待并输出一个空文件。(或控制台记录一个未定义的)

const IPFS = require('ipfs-api');
const ipfs = new IPFS({ host: 'ipfs.infura.io', port: 5001, protocol: 'https' });
const fs = require('fs-extra'); 

const dir = 'D:/JTEST/';
let nameToHash = new Object();

function writeJSON() {
    let output= JSON.stringify(nameToHash);
    fs.writeFileSync('output.json', output);
}

async function addFile(data, filename){
    await ipfs.add(data, (err, ipfsHash) =>{
        console.log(ipfsHash);
        nameToHash[filename] = ipfsHash[0]['hash'];
    });
}

fs.readdir(dir, async (err, files) => {
    if (err)
        console.log(err);
    else {
        for(const file of files){
            let data = fs.readFileSync(dir + file);
            let a = await addFile(data, file);
            console.log(nameToHash); //writeJSON();
        }
    }
})

【问题讨论】:

    标签: javascript async-await js-ipfs


    【解决方案1】:

    ipfs-api 模块的文档在这里:https://www.npmjs.com/package/ipfs-api,我看到这个模块的许多功能使用回调样式。所以await不等待是正常的。

    为了使用 async/await 关键字,你应该承诺回调函数。 这篇文章可能会帮助你更好地理解:https://flaviocopes.com/node-promisify/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多