【问题标题】:then not working just after fetch in nativescript然后在 nativescript 中获取后不工作
【发布时间】: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


    【解决方案1】:

    isvaliduser 函数中,您将返回 fetch 承诺。所以你必须在调用函数时解决promise。

    您甚至可以在 then 之后添加 catch 来捕捉任何错误并记录它们。

    function btnClick() {
        login.isvaliduser(id,pwd).then(function (whatever) {
          // do whatever you want next
          var rid = login.get("roleId").getItem(0);
        })
        .catch(function (error) {
          console.error(error);
        });
    }
    

    【讨论】:

    • 谢谢!我认为这应该有效。我会尽力让你知道
    • 感谢现在 fetch.then 正在执行,但问题是它没有进入 login.isvaliduser(id,pwd).then(function(){ console.log("这不是打印") ; });
    • @Radhey.g 也许它正在捕获错误。之后添加一个捕获。我会编辑我的帖子
    • 好的,谢谢。它正在出错。你能告诉我如何识别这些错误吗?如果可能的话,因为我是新手。
    • 谢谢,我发现了错误并且也能够解决它。要投票,我需要至少 15 个声望,一旦我到达那里,我肯定会回来投票。
    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多