Ich muss zwei http Anfragen. Die zweite HTTP-Anforderung erfordert Informationen von der ersten. Die erste Anforderung besteht darin, die Variable "Betrag" zu setzen, die während der zweiten Anfrage verwendet wird.Wie verwende ich Versprechen für eine einzelne Variable?
Dies ist ein Codeabschnitt von mir.
(die Variablen ‚url‘ und ‚Zahl‘ sind vorhanden, foo() ist etwas anderes.)
var Promise = require('bluebird');
var request = require('request-promise');
var amount;
request({url: url, json: true }, function(error, response, body) {
if (!error && response.statusCode == 200) {
amount = body.num;
}
}).then(function(data) {
if (number == null || number > amount) {
number = Math.floor(Math.random() * amount) + 1;
}
request({
url: url,
json: true
}, function(error, response, body) {
if(!error & response.statusCode == 200) {
foo();
}
});
});
der Code funktioniert, aber es ist nicht schön mit dieser Verschachtelung von Anfragen. Gibt es eine Möglichkeit, eine Variable zu versprechen und dann eine Funktion auszulösen, wenn diese Variable gesetzt wurde?
Sie verwenden ['request-promise'] (https://github.com/request/request-promise), verwenden aber trotzdem einen nicht-versprechenden Rückruf. Warum? –
Woher kommt 'number'? –