[英]function inside another function doesn't execute in JS
在我當前的項目中,我有一個函數調用 angular 自定義服務並將數據分配給變量
var vm = this;
vm.itemname = '';
function getItems(){
var result = myservice.getFromLibrary();
result.then(function(data){
vm.dataSet = data;
});
}
我有另一個函數來保存數據,保存后應該調用 getItem() 函數,如下所示
vm.addItem = function(){
var newItem = {"title": vm.itemname};
myservice.setToLibrary(newItem);
getItems();
};
但是當 vm.addItem 調用時,它不會檢索 getItems 函數中的項目,但它給了我一個未定義的輸出
任何幫助將不勝感激解決此問題
首先,我你調用的函數名錯了, getItem
應該是getItems
。
如果是拼寫錯誤,請在服務返回承諾后調用 getItems 方法。
您甚至可以從回調中添加錯誤函數。
當您使用此promise(then and error)
,僅當響應來自服務時才會執行下一行代碼。
vm.addItem = function(){
var newItem = {"title": vm.itemname};
myservice.setToLibrary(newItem)
.then(function(response){
getItem();
}
function error(response)
{
console.log('error')
});
};
函數名稱是getItems()
但是當您從addItem
調用它時,您正在調用一個未定義的函數getItem()
- 您嘗試調用的函數名稱中缺少s
。
如果我假設正確,您正在通過服務調用myservice.setToLibrary(newItem);
添加一個項目myservice.setToLibrary(newItem);
然后通過getItems();
讀取 DB 中存在的項目getItems();
這又是一個服務調用,即$http POST or GET
。
“未定義”輸出背后的原因
正如您在vm.addItem()
函數中看到的,您正在執行兩個$http
調用來添加和讀取。由於$http
本質上是異步的,您的getItems()
甚至在您的myservice.setToLibrary(newItem)
完全執行之前就已執行.
因此,您將獲得未定義的輸出。
解決方法
在vm.addItem()
函數中進行一些調整,如下所示
vm.addItem = function(){
var newItem = {"title": vm.itemname};
myservice.setToLibrary(newItem).success(function(data){
getItems();
});
當我們在setToLibrary()
調用成功后進行getItems()
調用時,這種方法將獲得您想要的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.