var executeSequence = function(promiseFn, values, acc) {
if (!values.length) return Promise.resolve(acc);
var promise = promiseFn(values.shift());
acc = acc || [];
return promise.then(function(result) {
acc.push(result);
return executeSequence(promiseFn, values, acc);
});
};
var requestUrl = function(url) {
return new Promise((resolve, reject) => {
request(url, function(error, response, body){
if (error) {
reject(error);
}
resolve(body);
});
}
executeSequence(requestUrl, ['http://google.com', ...])
.then(function(response) {
// response это массив из body для каждого из url по порядку
})
.catch(function(reason) {
});
request
.get('https://api.mystend.domain.zone/jsonRpc')
.send({ query: 'dogById', id: '13' }) /* тут вот некий объект, описывающий запрос согласно спецификации, которую вам должны предоставить разработчики вашего "JsonRpc" */
.set('X-API-Key', 'foobar') // Ну и заголовочки (авторизация там может или еще что)
.set('Accept', 'application/json')
.end(function(err, res) { // Тут ответ этого самого JsonRpc
expect(res.dogName).toEqual('Brownie');
});
var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true })ж
var results = [];
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;
})
.then(results.push.bind(results))
.goto('http://google.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;
})
.then(results.push.bind(results))
.end()
.then(function() {
console.log(results);
})
.catch(function (error) {
console.error('Search failed:', error);
});
this.titleLocalized = this.title[Object.keys(this.title)[0]];