Ich habe eine Funktion, die eine andere Funktion ruft, die Versprechen zurückgeben. Aber anstatt holen fetch.then (...) es führt nächste Zeile unter Funktion aufrufen und dann führt oder fangen. hat jemand eine Idee über dieses seltsame Verhalten?dann funktioniert nicht direkt nach dem Holen in nativescript
ex.
isvalidUser = function(uid,pwd)
{
console.log("first");
return fetch(config.loginApiUrl + "?uid=" +uid +"&pwd="+pwd)
.then((response) => {
if(response.ok)
{
console.log("second");
return response.json();
}else {
return Promise.reject({status: response.status, data});
}
}).then(function(data) {
console.log("data l:" + data.length);
for(var i=0;i<=data.length;i++)
{
console.log("third ");
viewModel.get("roleId").push(data[i].securityRoleId);
viewModel.get("UserName").push(data[i].name);
}
}).catch(handleErrors);
}
function handleErrors(response) {
if (!response.ok) {
console.log("inerror");
console.log(JSON.stringify(response));
throw Error(response.statusText);
}
return response;
} Funktionsaufruf auf eine andere Datei
btn_click()
{
console.log("execute");
login.isvaliduser(id,pwd);-----------------------1
var rid = login.get("roleId").getItem(0);---------------------2
console.log("role:"+rid);
}
Konsolenausgabe: ausführen
erste
Rolle:
Sekunden
dritte
inerror
in diesem Fall ist es zweite Zeile ausführen zuerst, dann führen Sie dann (...) von ValidUser()
mir bitte helfen. Es passiert in jedem einzelnen Aufruf meines Projekts.
Vielen Dank! Ich denke, das sollte funktionieren. Ich werde versuchen, Sie wissen zu lassen –
danke jetzt fetch.then wird ausgeführt, aber das Problem ist, dass es nicht innerhalb von login.isvaliduser (id, pwd) geht. Dann (function() { console.log ("dies wird nicht gedruckt "); }); –
@ Radhey.g vielleicht ist es ein Fehler zu fangen. Fang danach an. Ich werde meinen Beitrag bearbeiten – Lokuzt