2016-11-27 3 views
0

Les exemples que je vois dans les docs appellent .end() avant que .then() soit utilisé. tels queComment mettre fin à l'instance de NightmareJs après enchaînement des promesses?

nightmare 
    .goto('http://yahoo.com') 
    .type('form[action*="/search"] [name=p]', 'github nightmare') 
    .click('form[action*="/search"] [type=submit]') 
    .wait('#main') 
    .evaluate(function() { 
    return document.querySelector('#main .searchCenterMiddle li a').href 
    }) 
    .end() 
    .then(function (result) { 
    console.log(result) 
    }) 
    .catch(function (error) { 
    console.error('Search failed:', error); 
    }); 

Cependant, je suis en train de le faire comme ...

... 
.then(function() {...}) 
.end() 

mais je reçois une erreur indiquant que .end n'existe pas.

J'ai également essayé le ci-dessous, qui ne jette pas une erreur mais qui causera le cauchemar.

... 
.then(function() {...}) 
.then(function() { 
    nightmare.end() 
}); 

Répondre

2

par le Github issue discussion

nightmare.end() doit être retourné d'un .alors enchaîné(), et non pas seulement invoqué.

... 
.then(function() {...}) 
.then(function() { 
    return nightmare.end(); 
})