1


我正在使用 Nightmare 抓取网页,并且想知道如何在输入数组上重用函数。

可以说我有一种方法来检索页面的标题

function* test(url,callback) {
    var size = { width: 1920, height: 1080, 'use-content-size': true, show: true }

    var nightmare = Nightmare(size)
    var title = yield nightmare
    .goto('http://cnn.com')
    .evaluate(function () {
        return document.title
    });
    console.log(title)
    yield nightmare.end()
    callback()
}

我想对一组 url 执行此方法。所以我使用异步库来运行整个数组并在url 数组上执行test函数。urls

async.each(urls, test, function (err) {
    console.log('done!');
});

但是async.each不支持生成器功能,如何将测试功能更改为普通功能而不是生成器功能。

4

1 回答 1

0

我找到了一种方法——我需要使用 Promise 库来执行多个功能,这是一个正常的功能。

function test(url){
    Promise.resolve(  // call for the promises library with the nightmare instance 
        nightmare
        .goto() //all the calls that you need
        .wait()
        .....    
        ).then(function (result) { //This function will be called when the block of commands is done , with the result.
              console.log("Done")
        }, function (err) { //Error handling 
              console.log(err);
    });
}
于 2016-01-10T19:06:11.633 回答