如何将返回的数据分配给变量 - angularjs

时间:2015-01-22 06:33:00

标签: angularjs

SendOTP功能正常工作并返回数据。我试图将其分配给变量。

JS:

var SentStatus = "";
DataFactory.SendOTP('39487539847')
.success(function (data, status) {
console.log('1 : ' + data);
console.log('2 : ' + JSON.parse(data));
SentStatus = JSON.parse(data);
})
.error(function (data, status) {
SentStatus = JSON.parse(data);
});
console.log('3 : ' + SentStatus);

在浏览器控制台中,我看到:

3 :
1 : "\"200\""
2 : 200 
  1. 为什么SentStatus为空。
  2. 为什么订单是3,1,2。不应该 这是1,2,3
  3. 修改

    var SentStatus = "";
    DataFactory.SendOTP('39487539847')
    .then(function (data, status) {        
    SMSSentStatus = JSON.parse(data);
    })
    .catch(function (data, status) {
    SMSSentStatus = JSON.parse(data);
    })
    .finally(function () {
    console.log('3 : ' + SMSSentStatus);
    });
    
    dataFactory.SendOTP = function (mobileNumber) {
    return $http({
      url: GlobalVariables.vcAPIBaseUrl + "SendOTP",
      method: "GET",
      params: {
        mobileNumber: mobileNumber                
      }
      }).success(function (data, status) {            
      }).error(function (data, status) {            
      });        
    };
    

    解决: .then(),catch()和.finally()都有效。我只是没有正确读取数据。 在我的情况下,它必须是SMSSentStatus = JSON.parse(data.data)

1 个答案:

答案 0 :(得分:3)

这里成功和错误是回调函数,这意味着异步本质上是一个调用被发送到DataFactoru.SendOTP并且事件被注册到事件列表器并等待响应的同时你的console.log('3:'+ SentStatus );同时运行,显然你还没有价值所以它只是打印“3:”。得到响应后它启动成功功能并打印其他两个控制台。

顺序是

3-> 1> 2简单: - )

抱歉英语不好