1
私は、約束を返す別の関数を呼び出す関数を1つ持っています。 しかし、fetch.then(...)を呼び出す代わりに、関数呼び出しの次の行を実行し、thenまたはcatchを実行します。 誰でもこの奇妙な行動について考えているのですか?ネイティブスクリプトでフェッチした直後には動作しません
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;
}別のファイルに関数呼び出し
btn_click()
{
console.log("execute");
login.isvaliduser(id,pwd);-----------------------1
var rid = login.get("roleId").getItem(0);---------------------2
console.log("role:"+rid);
}
コンソール出力:
第
役割を実行し
二
第三
それは、最初の二行を実行ValidUserというの(...)を実行し、この場合の
inerror()
は私を助けてください。それは私のプロジェクトのすべてのAPIコールで発生します。
ありがとうございました!私はこれがうまくいくと思います。私は試してみてください –
おかげで今fetch.thenが実行されているが、問題はそれが内部に入っていないということですlogin.isvaliduser(id、pwd).then(function(){ console.log( "これは印刷されません"); }); –
@ Radhey.gおそらく、それはエラーをキャッチしています。その後にキャッチを追加してください。投稿を編集します – Lokuzt