【发布时间】:2017-11-30 14:00:39
【问题描述】:
我有一个函数调用另一个返回承诺的函数。 但它不是调用 fetch.then(...),而是在函数调用下执行下一行,然后执行 then 或 catch。 有人知道这种奇怪的行为吗?
例如
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() 的 then(...)
请帮助我。它发生在我项目的每个 api 调用中。
【问题讨论】:
标签: javascript promise fetch nativescript