2017-10-20 96 views
0

我设法让我的代码等待提示,但由于某种原因它不会在收到提示后继续。输出是:与提示的木偶,忽略功能的其余部分

prompt: password: 
Command-line input received: 
    password: password 

下面的代码:

const puppeteer = require('puppeteer'); 
const prompt = require('prompt'); 
const url = 'some url'; 

var schema = { 
    properties: { 
    password: { 
     hidden: true 
    } 
    } 
}; 

prompt.start(); 

(async() => { 
    var result = await new Promise(function (resolve, reject) { 
     return prompt.get(schema, function (err, result) { 
      console.log('Command-line input received:'); 
      console.log(' password: ' + result.password); 
      return result; 
     }) 
    }); 
    console.log(result); 
    const browser = await puppeteer.launch({ headless: false }); 
    const page = await browser.newPage(); 
    await page.goto(url); 
    /* truncated */ 
})(); 

回答

1

你必须解决的承诺。我重新编写了一些代码,以便在实践中展示这个概念。

const puppeteer = require('puppeteer'); 
const prompt = require('prompt'); 

var schema = { 
    properties: { 
     url: { 
      hidden: false 
     } 
    } 
}; 

prompt.start(); 

(async() => { 
    var result = await new Promise(function (resolve, reject) { 
     prompt.get(schema, function (err, result) { 
      resolve(result); 
     }); 
    }); 
    const browser = await puppeteer.launch({ 
     headless: true 
    }); 

    const page = await browser.newPage(); 
    await page.goto(result.url); 
    const title = await page.title(); 

    console.log(`${result.url} has title: ${title}`); 

    await page.close(); 
    await browser.close(); 
    /* truncated */ 
})(); 

并运行它将产生以下结果。

▶ node prompt.js 
prompt: url: http://example.com 
http://example.com has title: Example Domain 

▶ node prompt.js 
prompt: url: http://google.com 
http://google.com has title: Google 

祝您好运。

+0

我会在访问代码时回复您 –