如何使Polymer 2.x函数异步

时间:2019-02-14 16:48:46

标签: asynchronous async-await polymer-2.x

我正在尝试使用形状检测API(https://developers.google.com/web/updates/2019/01/shape-detection)并出现错误:

  

未捕获的SyntaxError:等待仅在异步函数中有效

浏览了Polymer 2.x文档(https://polymer-library.polymer-project.org/2.0/api/namespaces/Polymer.Async)后,我得到以下信息:

ready() {
  super.ready();
  this.initImageDetection();
}

initImageDetection() {
  const barcodeDetector = new BarcodeDetector({
    formats: [
      'code_128'
    ]
  });
  try {
    const barcodes = await barcodeDetector.detect(image);
    barcodes.forEach(barcode => console.log(barcode));
  } catch (e) {
    console.error('Barcode detection failed:', e);
  }
}

此模式也因相同的错误而失败:

this.async(() => {
  const barcodes = await barcodeDetector.detect(image)
  barcodes.forEach(barcode => console.log(barcode)
)});

此外,在加载了DOM之后,运行以initImageDetection为前缀的async,并从paper-button开始运行。

async initImageDetection() {
  ...
}

我收到以下错误:

  

未捕获(承诺)ReferenceError:未定义BarcodeDetector

如何在Polymer 2.x中正确使函数异步?

如何在Polymer 2.x中实例化BarcodeDetector?

1 个答案:

答案 0 :(得分:0)

async functionName() {
  // function code here
}

是在Polymer中设置异步功能的正确方法。但是,BarcodeDetector对象隐藏在Chrome中的标志后面,因此必须在chrome://flags Experimental Web Platform features中启用后才能使用。