2017-11-05 5 views
0

私はpuppeteerで関数を評価しようとしていますが、コールバックは決して起動しません(私は、ホストページが期待通りに動作していると確信しています)。この上の運を持っていないpuppeteerはコールバックで機能を評価します

try { 
    const dbhandle = await page.evaluate('DB.when("ready")'); 
    const result = await page.evaluate(db => db.execute, function(images) { 
    console.log(JSON.stringify(images)); 
    //do stuff with callback 
    }, dbhandle); 
    console.log('result', JSON.stringify(result)); 
} catch (e) { 
    console.log('evaluate', e); 
} finally { 
    console.log('finally'); 
} 

アム:私の人形遣いコードの準備ができているデシベルを取得しようと

DB.when('ready').execute(function(db){ 
    // DB can execute stuff 
}) 

:のようにリスナーが動作するホストページ

。私はそれを考え出した

答えて

1

OMG ...

try { 
    function fooBugger() { 
    return new Promise((resolve, reject) => { 
     DB.when('ready').execute(function(db) { 
     if (db) { 
      resolve(db.some_data); 
     } else { 
      reject('nope'); 
     } 
     }); 
    }); 
    } 
    const res = await page.evaluate(fooBugger); 

    console.log('resultHandle', JSON.stringify(res)); 
} catch (e) { 
    console.log('evaluateHandle', e); 
} finally { 
} 
+1

ニースの仕事!ほとんどのものは約束に基づいているので、コールバックを約束でラップするのが一般的な方法です。 –

関連する問題