如何在PapaParse中使用Promise?

the*_*eat 12 javascript promise papaparse

PapaParse的API有一个异步回调函数.我想知道如何将其转化为承诺.例如:

Papa.parse(fileInput.files[0], {
    complete: function(results) {
        console.log(results);
    }
});
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

小智 19

基本模式是

Papa.parsePromise = function(file) {
  return new Promise(function(complete, error) {
    Papa.parse(file, {complete, error});
  });
};
Run Code Online (Sandbox Code Playgroud)

然后

Papa.parsePromise(fileInput.files[0]) .
  then(function(results) { console.log(results); });
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,我将如何使块工作? (4认同)
  • @Kyouma `complete` 是 Promise 的 `resolve` 函数,`error` 是 `reject` 函数,它们被用作 `Papa.parse` 的 `complete` 和 `error` 的回调函数。 (2认同)

小智 5

如果你想使用异步/等待...

someButtonClicked = async rawFile => {
    const parseFile = rawFile => {
      return new Promise(resolve => {
        papa.parse(rawFile, {
          complete: results => {
            resolve(results.data);
          }
        });
      });
    };
    let parsedData = await parseFile(rawFile);
    console.log("parsedData", parsedData);
  };
Run Code Online (Sandbox Code Playgroud)

  • 您应该将“parseFile”“帮助程序”函数移到“someButtonClicked”之外,它实际上独立于“async”/“await”的使用。 (2认同)