그래서 나는 URL을각 반복에서 변수를 전달하는 동안 기수 인스턴스를 반복하는 방법은 무엇입니까?
의 배열에 저장된 각 링크에서 모든 HTML을 끌어 자바 스크립트 사용 horseman.js에서 스크립트기본 개념은 다음과 로그 하나 개의 URL의 HTML을 잘
무엇을 쓰기 위해 노력하고 있어요 이제 예를var result = "";
var pulledHtml = "";
var website = ["www.example1.com","www.example2.com"]; //(etc)
var horseman = new Horseman();
for (var i = 0; i < website.length; i++) {
horseman
.open(website)
.html()
.then(function(html){
pulledHtml = html;
result += pulledhtml;
return result;
})
.log()
.close();
}
console.log(result);
은이
내가 생을 알고 내가 루프 때
var Horseman = require('node-horseman');
var result = "";
var pulledHtml = "";
var horseman = new Horseman();
horseman
.open(website)
.html()
.then(function(html){
pulledHtml = html;
result += pulledhtml;
return result;
})
.log()
.close();
console.log(results);
문제는 온다 루프가 운 좋게도 문제가되지 않는다는 것입니다. 위의 코드에서이 문제를 해결하는 방법에 대한 좋은 이해를 얻으 려합니다.
문제는 다음과 같습니다. 1) for 루프는 동기화 대 기수가 비동기가되어서 for 루프가 현재 URL에서 html을 가져 오기 전에 기수를 다시 호출합니다.
2.) 내가 새 변수를 찾을 때 가장 좋은 방법을 찾지 못하는 것처럼 보입니다. 내가 잘하고 있지 않다는 것을 확신한다. (최종 목표는 모든 HTML을 하나의 변수에 저장하는 것이다.)
나는 첫 번째 문제를 해결하기 위해 지금까지 시도했다.
var chain = horseman
for(var i = 1; i < website.length; i++) {
chain = horseman
.open(website)
.html()
.then(function(html){
pulledHtml = html;
result += pulledhtml;
return result;
})
.log()
.close();
}
하지만 난 아무것도 반환하지 않습니다 루프 후 결과를 console.logging 등이 하나를 테스트 할 수있는 좋은 방법이없는
그러나,이 (나중에 결과 변수로 일을합니다) 을 console.log 그냥 즉시
마지막 루프 예를 들어 운명 내가 아무 소용이 여전히
async.each(website, function(item, callback) {
horseman
.open(website)
.html()
.then(function(html){
pulledHtml = html;
result += pulledhtml;
return result;
})
.log()
.close();
callback();
});
console.log(result);
을 시도에 같이 빈 결과 변수를 반환하지 않는 한, 기다릴 나타납니다
누군가가 나를 도와 줄 수 있다면 많은 감사드립니다!
감사합니다! 이것은 내가 찾고 있었던 정확하게 것이었다!! – Tahum
당신을 진심으로 환영합니다. 도와 드리겠습니다 :) –