我知道回调地狱很糟糕,但我无法在打字稿中解决这个问题。 如果我想删除一个类别:
首先检查类别是否存在 第二次检查类别是否为父?
如果有更新类别的父子集合
最后回调控制器向客户端发送消息。
任何人都可以帮助我吗? 这是我的方法代码:
removeCategory(catId: string, callback: (error: any, result: any) => void) {
var msg = {
"message": "",
"statescode": 200,
"error": null
};
console.log("find category");
if (catId) {
super.findById(catId, (getError: any, getEntity: any) => {
if (getError) {
msg.message = "can't find this item: " + catId;
msg.statescode = 404;
msg.error = getError;
callback(msg, null);
} else {
console.log("find category");
super.remove(catId, (delError: any, delEntity: any) => {
if (delError) {
msg.message = "something wrong with remove this category: " + getEntity.name;
msg.statescode = 400;
msg.error = delError;
callback(msg, null);
}
else {
if (getEntity.parent) {
var parentId = getEntity.parent;
super.update(parentId, { $pull: { childrens: getEntity._id } }, (putError: any, putEntity: any) => {
if (putError) {
msg.message = "can't update this item:" + item.name;
msg.statescode = 500;
msg.error = putError;
callback(msg, null);
}
else {
callback(null, getEntity);
}
});
} else {
callback(null, getEntity);
}
}
});
}
});
}
else {
msg.message = "entityId can't be empty!";
msg.statescode = 400;
callback(msg, null)
}
}
答案 0 :(得分:1)
在Typescript 2.0中有关于Async Functions的提案可能对您有所帮助,您可以继续关注它。
您现在也可以查看Async.js library,在这种情况下也会有所帮助。
希望这会有所帮助!!
答案 1 :(得分:1)
在mongoose中使用promise可以解决这个问题。 这是代码:
angular
.module('app')
.service('myDataService', myDataService);
myDataService.$inject = ['ngResource'];
function myDataService($resource) {
var self = this;
self.MyData = $resource(myURL, {}, {
query: { method: 'GET', isArray: true }
});
}