Ich versuche d3.json()
innerhalb einer Funktion zu verwenden, um Daten Spotify API einen Künstler-ID (wie 5K4W6rqBFWDnAN6FQUkS6x) gegeben zurückzukehren, aber ich kann nicht herausfinden, wie effektiv die Daten zurückzukehren. Die Funktion sieht aus wied3 - Kann keine Daten von json Anfrage zurückgeben?
// Get artist's related artist's information
function relatedArtists(id){
var jsonPromise = new Promise(function(resolve, reject) {
// Async JSON request
d3.json('https://api.spotify.com/v1/artists/' + id + '/related-artists', function(error, data){
if(error) reject(error);
resolve(data.artists);
});
});
jsonPromise.then(function(success) {
console.log(success);
//return(success) //doesn't work
});
jsonPromise.catch(function(error){
console.error(error);
});
}
Ich habe versucht, eine Variable in der Funktion zu schaffen und dann zu modifizieren
function relatedArtists(id){
var testVar = 'hello';
var jsonPromise = new Promise(...{
// Async JSON request
d3.json(...)
});
jsonPromise.then(function(success) {
testVar = success;
});
return(testVar);
}
Aber testVar
bleibt 'hello'
, trotz all meiner Bemühungen. Ich habe etwas über den Umfang und die Versprechungen gelesen, bin aber froh, mehr zu tun, wenn es eine Kernmechanik von beiden gibt, die ich nicht verstehe. Danke fürs Lesen!
Oh, das ist wirklich cool-so 'd3.queue' ist eine Möglichkeit, Aktionen aufzuschieben, bis eine Anforderung abgeschlossen? Das scheint wirklich nützlich zu sein, danke! –
Ja, können Sie jede Rückrufraubend async Funktion verschieben. Hinzu kommt, können Sie [Gleichzeitigkeit] (https://github.com/d3/d3-queue/blob/master/README.md#queue) und machen Aufgaben [abbrechbare] (https://github.com/d3 konfigurieren /d3-queue/blob/master/README.md#queue_abort)... – undko