接下來關於ajax中的return值最后沒有辦法是方法的最終返回值問題
login(username,password) { console.log("進入方法"); $.ajax({ type:"POST", url:"http://192.168.28.168:1314/api/Users/login", dataType:"Json", data:{ "username":username, "password": password, }, success:function(data){ console.log("調用接口成功") console.log(data.statusCode); return data.statusCode; }, error:function(err){ console.log("調用接口失敗"); status = 0; } }); }
我們能看到方法中明明return了但是 調試卻發現 這個方法的返回值是defined
其實因為在ajax方法中return只是退出了ajax方法 並非是login方法的返回值
然后我們設置一個新的變量,然后在ajax內部賦值,最后在ajax方法外return試試
仍然不行
Ok這就涉及到ajax是異步行為,所以就是在return的時候ajax不一定拿到了值
我希望只有當status有數據的時候再返回
那其實這個思路就是錯的因為是異步 的這個if只能判斷一次不是反復判斷的
也就是說在ajax拿到值之后也未必會在進入status判斷
嘗試用setState的方法結果發現setState 竟然打印的結果不同
最后的解決方案,換個思路,你未必一定要讓你的方法有返回值可以把方法寫在ajax的success函數中去。