如果你使用异步操作,比如Promise
, callback
,async-await
你就不能再使用同步流了。
可以这样想,异步函数是将来会完成的操作,你想从中获得一些价值,然后在第一个异步函数完成之前你无法获得价值。
话虽这么说,如果您不想使用 Promise 链,则CAN
使用Promises
(似乎)像同步函数一样。aysnc-await
所以你需要promisify这个tesseract.process
功能:
const utils = require('util');
(async () => {
const tessProcess = utils.promisify(tesseract.process);
try {
const text = await tessProcess('new.png');
console.log("Recognized text:", text);
} catch (err) {
console.log("An error occured: ", err);
}
})();
编辑:检查代码片段后:
const utils = require('util');
(async () => {
const browser = await puppeteer.launch({headless: false})
const page = await browser.newPage()
const tessProcess = utils.promisify(tesseract.process);
await page.setViewport(viewPort)
await page.goto('example.com')
await page.screenshot(options)
const text = await tessProcess('new.png');
//YOU CAN USE text HERE/////////////
await page.$eval('input[id=companyID]', (el, value) => el.value = value, text);//here too
await browser.close()
})()