下面的代码结合使用 jQuery Promise 和回调执行以下操作:
- 将组 UUID 保存到服务器使用
storeGroupOnServer()
- 使用为组创建 DOM 元素
createGroupDomNode()
- 为每个图像创建子元素,使用
createNewChildDomNode()
怎样才能写得更扁平(避免嵌套),使用.then()
?
groupPromise.done(function(fileGroupInfo) {
storeGroupOnServer(fileGroupInfo.uuid, function(groupid){
createGroupDomNode(groupid, function(groupnode){
$.each(arrayOfFiles, function(i, file) {
file.done(function(fileInfo) {
createNewChildDomNode(fileInfo.cdnUrl, groupnode);
});
});
});
});
});
第 1 步:storeGroupOnServer():
storeGroupOnServer = function(uuid, callback) {
$.post('saveGroup.php', {uuid:uuid},
function(data) {
callback(data.groupid);
},'json');
};
第 2 步:创建GroupDomNode():
createGroupDomNode = function(groupid, callback) {
var cloner = $('#cloner');
var newnode = cloner.clone(true);
newnode.attr('id',groupid);
newnode.removeClass('hide');
cloner.after(newnode);
callback(newnode);
}
第 3 步:createNewChildDomNode():
function createNewChildDomNode(imgpath, groupdom){
imgnode = $('<img/>').attr('src',imgpath);
picnode = $('<picture/>').append(imgnode);
$(groupdom).first().prepend(picnode);
}