首页 > 解决方案 > Promise 导致 Unexpected 标识符

问题描述

这个有效:

const phantom   = require('phantom');

async function createBrowser_normal() { 
    var instance = await phantom.create(['--ignore-ssl-errors=yes', '--load-images=no']);
}

唯一的问题是当我打电话时,createBrowser_normal()我不能确定它是否完成了幻象实例的创建。

所以我尝试使用一个承诺......

const phantom   = require('phantom');

async function createBrowser_promise() { 
    return new Promise((resolve, reject) => {
        var instance = await phantom.create(['--ignore-ssl-errors=yes', '--load-images=no']);
        return resolve();
    })
}

问题是我现在在此处输入图像描述收到此错误....

有任何想法吗?

史蒂夫建议:

async function createBrowser_normal(cb) {
    console.log("Inside Before call"); 
    instance = await phantom.create(['--ignore-ssl-errors=yes', '--load-images=no']);
    console.log("Inside After call"); 
    return cb(instance);
}

console.log("Before call"); 
createBrowser_normal( instance => { 
    console.log("Got instance", instance); 
    // All code goes here.....
});
console.log("After call"); 

这给了我这样的日志:

Before call
Inside Before call
After call
Inside After call
Got instance Phantom {....data....}

因此,res = await createBrowser_normal我不必将实例后面的代码放入“ // All code goes here...

标签: node.js

解决方案


await需要声明使用关键字的 Promise 函数async。你只能await在里面使用async

async function createBrowser_promise() { 
    return new Promise(async(resolve, reject) => {
        var instance = await phantom.create(['--ignore-ssl-errors=yes', '--load-images=no']);
        return resolve();
    })
}

问题仅在于这一行

return new Promise((resolve, reject) => {

应该是

return new Promise(async(resolve, reject) => {


推荐阅读