JAVASCRIPT : Pourquoi ca marche pas ?

pokento
2022-11-10 10:22:27

Je cherche à obtenir la population de la France :
là ca marchehttps://image.noelshack.com/fichiers/2022/45/4/1668072041-1.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072070-2.png

mais là ca marche pashttps://image.noelshack.com/fichiers/2022/45/4/1668072041-3.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072085-4.png

Pourquoi ? :-( Soyez indulgent je suis en terminale sti :hap:

AH_CA_J_AI_INT
2022-11-10 10:23:49

Le 10 novembre 2022 à 10:22:27 :
Je cherche à obtenir la population de la France :
là ca marchehttps://image.noelshack.com/fichiers/2022/45/4/1668072041-1.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072070-2.png

mais là ca marche pashttps://image.noelshack.com/fichiers/2022/45/4/1668072041-3.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072085-4.png

Pourquoi ? :-( Soyez indulgent je suis en terminale sti :hap:

T'as une parenthèse fermante au milieu qui sert à rien.

AH_CA_J_AI_INT
2022-11-10 10:25:30

Le 10 novembre 2022 à 10:23:49 :

Le 10 novembre 2022 à 10:22:27 :
Je cherche à obtenir la population de la France :
là ca marchehttps://image.noelshack.com/fichiers/2022/45/4/1668072041-1.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072070-2.png

mais là ca marche pashttps://image.noelshack.com/fichiers/2022/45/4/1668072041-3.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072085-4.png

Pourquoi ? :-( Soyez indulgent je suis en terminale sti :hap:

T'as une parenthèse fermante au milieu qui sert à rien.

+ problème de ";" aussi

salad1n
2022-11-10 10:25:46

Tu fais un .then() sur ta fonction getJSON() qui n'est pas asynchrone.

pokento
2022-11-10 10:26:15

Le 10 novembre 2022 à 10:23:49 :

Le 10 novembre 2022 à 10:22:27 :
Je cherche à obtenir la population de la France :
là ca marchehttps://image.noelshack.com/fichiers/2022/45/4/1668072041-1.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072070-2.png

mais là ca marche pashttps://image.noelshack.com/fichiers/2022/45/4/1668072041-3.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072085-4.png

Pourquoi ? :-( Soyez indulgent je suis en terminale sti :hap:

T'as une parenthèse fermante au milieu qui sert à rien.

Où ça ? https://pastebin.com/raw/ariQWG7s
J'ai aucune parenthèse en trop :(

salad1n
2022-11-10 10:26:24

Le 10 novembre 2022 à 10:25:30 :

Le 10 novembre 2022 à 10:23:49 :

Le 10 novembre 2022 à 10:22:27 :
Je cherche à obtenir la population de la France :
là ca marchehttps://image.noelshack.com/fichiers/2022/45/4/1668072041-1.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072070-2.png

mais là ca marche pashttps://image.noelshack.com/fichiers/2022/45/4/1668072041-3.png:d)https://image.noelshack.com/fichiers/2022/45/4/1668072085-4.png

Pourquoi ? :-( Soyez indulgent je suis en terminale sti :hap:

T'as une parenthèse fermante au milieu qui sert à rien.

+ problème de ";" aussi

On s'en fout en JS

salad1n
2022-11-10 10:27:07

let population;

async function getJSON (country) {
fetch(`https://restcountries.com/v3.1/name/${country}`).then(response => {
return response.json();
});
};

getJSON('France').then(data => {
population = data[0].population;
});

Ayaaooo95
2022-11-10 10:29:34

https://image.noelshack.com/fichiers/2022/45/4/1668072563-ahi.png

ta fonction getJson doit retourner une promesse.

pokento
2022-11-10 10:30:52

Le 10 novembre 2022 à 10:29:34 :
https://image.noelshack.com/fichiers/2022/45/4/1668072563-ahi.png

ta fonction getJson doit retourner une promesse.

bah elle retourne request.json() qui est une promesse :(

Le 10 novembre 2022 à 10:27:07 :
let population;

async function getJSON (country) {
fetch(`https://restcountries.com/v3.1/name/${country}`).then(response => {
return response.json();
});
};

getJSON('France').then(data => {
population = data[0].population;
});

:(

Ayaaooo95
2022-11-10 10:33:46

Le 10 novembre 2022 à 10:30:52 :

Le 10 novembre 2022 à 10:29:34 :
https://image.noelshack.com/fichiers/2022/45/4/1668072563-ahi.png

ta fonction getJson doit retourner une promesse.

bah elle retourne response.json() qui est une promesse :( C'est exactement pareil que dans le 1er exmeple qui fonctionne :(

Le 10 novembre 2022 à 10:27:07 :
let population;

async function getJSON (country) {
fetch(`https://restcountries.com/v3.1/name/${country}`).then(response => {
return response.json();
});
};

getJSON('France').then(data => {
population = data[0].population;
});

Uncaught (in promise) TypeError: data is undefined
:(

https://jsfiddle.net/3cok2j8z/

salad1n
2022-11-10 10:35:13

async function getJSON (country) {
const response = await fetch(`https://restcountries.com/v3.1/name/${country}`)
const json = await response.json();
return json[0].population
};

const population = await getJSON('France')
console.log(population)

Perso je ferais ca comme ca

Ayaaooo95
2022-11-10 10:38:07

Le 10 novembre 2022 à 10:35:13 :
async function getJSON (country) {
const response = await fetch(`https://restcountries.com/v3.1/name/${country}`)
const json = await response.json();
return json[0].population
};

const population = await getJSON('France')
console.log(population)

Perso je ferais ca comme ca

Oui c'est une possibilité aussi :
https://jsfiddle.net/r108d9nw/

0dose-0test-ban
2022-11-10 10:42:47

T'as pasmis de return dans le getJSON :ok:

let population;

const getJSON = function (country) {
return fetch(`https://restcountries.com/v3.1/name/${country}`).then(response => {
return response.json();
});
};

getJSON('France').then(data => {
population = data[0].population;
console.log(population);
});

pokento
2022-11-10 10:45:27

Le 10 novembre 2022 à 10:42:47 :
T'as pasmis de return dans le getJSON :ok:

let population;

const getJSON = function (country) {
return fetch(`https://restcountries.com/v3.1/name/${country}`).then(response => {
return response.json();
});
};

getJSON('France').then(data => {
population = data[0].population;
console.log(population);
});

:merci:

Ayaaooo95
2022-11-10 10:52:56

L'OP c'est pas ouf d'utiliser ça en fonction synchrone imaginons un délais de réponse du serveur :

Fonctionnera :
https://jsfiddle.net/53tzsdhv/

Ne fonctionnera pas :
https://jsfiddle.net/8ny52gpe/

0dose-0test-ban
2022-11-10 10:58:04

le délai est déjà pris en compte hein justement c'est pour ça qu'il y a un then, on rentre dans le then quand le serveur a répondu, c'est sur que ça fonctionne pas avec ton délai tu fais un return dans la fonction timeout.

délai en plus du délai de réponse du serveur
https://jsfiddle.net/0rm29ht7/

salem456
2022-11-10 11:04:08

Le 10 novembre 2022 à 10:52:56 :
L'OP c'est pas ouf d'utiliser ça en fonction synchrone imaginons un délais de réponse du serveur :

Fonctionnera :
https://jsfiddle.net/53tzsdhv/

Ne fonctionnera pas :
https://jsfiddle.net/8ny52gpe/

ton Q.I ?https://image.noelshack.com/fichiers/2016/26/1467335935-jesus1.png

ReggaeCat
2022-11-10 11:05:00

Retourne ta promise

pokento
2022-11-10 11:07:40

Le 10 novembre 2022 à 11:05:00 :
Retourne ta promise

oui j'ai vu mais je pensais que fetch retournait déjà une promesse (vu qu'on peut le chainer avec .then) donc pour moi mettre fetch directement ca voulait dire que la fonction retournait une promesse :(

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    ⚠️ Les archives de novembre sont désormais disponibles.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.