d2jsp
Log InRegister
d2jsp Forums > Off-Topic > International > Deutsch > Der Offizielle Developer Thread
Prev1111213141516Next
Add Reply New Topic New Poll
Member
Posts: 22,300
Joined: Mar 1 2013
Gold: 3,842.04
Aug 25 2016 02:51pm
ca. 100 jahre kein nodejs programmiert. scheitere an recursion. wer hilft? (js kenntnisse reichen, lel)

Code
var get = function() {
this.getJSON = function(baseUrl, offset) {
var request = require('request');
var _ = require('lodash');
request(baseUrl+offset, function(error, response, body) {
if(!error && response.statusCode == 200) {
var json = JSON.parse(body);

console.log(json);
console.log(json.length);

if(_.isEmpty(json)) {
console.log("empty!");
} else {
this.getJSON(baseUrl, offset+json.length); //problemstelle
}
}
});
}
};

module.exports = get;
Member
Posts: 10,738
Joined: Oct 12 2008
Gold: 307.10
Aug 25 2016 02:58pm
Dein snippet hat doch gar keine rekursion?
Member
Posts: 22,300
Joined: Mar 1 2013
Gold: 3,842.04
Aug 25 2016 03:02pm
Quote (xXxSebixXx @ 25 Aug 2016 21:58)
Dein snippet hat doch gar keine rekursion?


ich will das getJSON sich mit neuen werten selbst aufruft, bis der river zu ende is ... :D

siehe //problemstelle

ich weiss dass das wenn es überhaupt so funktionieren sollte bad practice ist - ich weiss nichtmal ob das so ansatzweise funktioniert.

This post was edited by Prophets on Aug 25 2016 03:08pm
Member
Posts: 10,738
Joined: Oct 12 2008
Gold: 307.10
Aug 25 2016 03:08pm
weiß jetzt nich genau wie JSon funktioniert. Weiß nur dass es daten in nem string speichert.
Mal so ne frage warum muss das rekursiv sein?
mach das doch iterativ
Also statt
Code
if(_.isEmpty(json)) {
console.log("empty!");
} else {
this.getJSON(baseUrl, offset+json.length); //problemstelle
}

mit ner while
Code
while(!_.isEmpty(json)) {
this.getJSON(baseUrl, offset+json.length);
} else {
console.log("empty!");
}

Member
Posts: 22,300
Joined: Mar 1 2013
Gold: 3,842.04
Aug 25 2016 03:11pm
Quote (xXxSebixXx @ 25 Aug 2016 22:08)
weiß jetzt nich genau wie JSon funktioniert. Weiß nur dass es daten in nem string speichert.
Mal so ne frage warum muss das rekursiv sein?
mach das doch iterativ
Also statt
Code
if(_.isEmpty(json)) {
console.log("empty!");
} else {
this.getJSON(baseUrl, offset+json.length); //problemstelle
}

mit ner while
Code
while(!_.isEmpty(json)) {
this.getJSON(baseUrl, offset+json.length);
} else {
console.log("empty!");
}


denke in der form würde er 5829568908x denselben call absetzen, da es dauert bis json wieder populated ist -> deswegen erst neuer aufruf sobald loop durch ist :(
e: hoffe drücke mich klar aus ^^
e2: das ganze ist ja zu 100% asnyc, ich warte nirgends auf irgendwas. wenn etwas erst nach etwas ausgeführt werden soll, geht das nur mit funktionsaufruf an der "bin fertig" stelle

This post was edited by Prophets on Aug 25 2016 03:16pm
Member
Posts: 10,738
Joined: Oct 12 2008
Gold: 307.10
Aug 25 2016 03:48pm
Code
var get = function(_offset, _baseUrl) {
var offset = _offset;
var baseUrl = _baseUrl;
var request = require('request');
var _ = require('lodash');
while(!_.isEmpty){
request(baseUrl+offset, function(error, response, body) {
if(!error && response.statusCode == 200) {
var json = JSON.parse(body);
console.log(json);
console.log(json.length);
offset = offset+json.length;
}
}
}console.log("empty!");

};

module.exports = get(20, "https://supercoolewebseite.com/index.html");


irg wie sowas? sry steig nich so ganz dahinter was du vorhast ^^
Member
Posts: 22,300
Joined: Mar 1 2013
Gold: 3,842.04
Aug 26 2016 02:52am
habs jetzt gelöst, so gehts:

frag mich aber nicht wieso das jetzt korrekt funktioniert und das was ich vorher hatte nicht ^_^

Code
var get = function() {
this.getJSON = function(baseUrl, offset) {
return _getJSON(baseUrl, offset);
}
};

var _getJSON = function(baseUrl, offset) {
var request = require('request');
var _ = require('lodash');

request(baseUrl+offset, function(error, response, body) {
if(!error && response.statusCode == 200) {
var json = JSON.parse(body);

console.log(json);
console.log(json.length);

if(_.isEmpty(json)) {
console.log("empty!");
} else {
return _getJSON(baseUrl, offset+json.length);
}
}
});
}

module.exports = get;
Member
Posts: 21,362
Joined: Sep 16 2009
Gold: 13.13
Aug 26 2016 03:12am
nennst du deine funktion immer function? ist doch nicht normal

oder hast du nur diese einzige?
Member
Posts: 22,300
Joined: Mar 1 2013
Gold: 3,842.04
Aug 26 2016 03:14am
Quote (Br0 @ 26 Aug 2016 10:12)
nennst du deine funktion immer function? ist doch nicht normal

oder hast du nur diese einzige?


ich nenne meine funktionen nicht "function"
ich weise einer variable eine funktion zu
Member
Posts: 17,542
Joined: Jan 24 2006
Gold: 22,484.47
Aug 26 2016 03:25am
Quote (Prophets @ Aug 26 2016 09:14am)
ich nenne meine funktionen nicht "function"
ich weise einer variable eine funktion zu


dann ist es doch aber in diesem fall genau so, wie es br0 gesagt bzw gefragt hat.

die funktion heißt bei dir function, mehrere mit dem namen würden logischer weise probleme machen. aber denke das ist jedem klar hier und die frage war eher rhetorischer natur.
Go Back To Deutsch Topic List
Prev1111213141516Next
Add Reply New Topic New Poll