【发布时间】:2017-08-30 07:53:19
【问题描述】:
我有几个函数,需要按顺序执行,
function home() {
var home = document.getElementById('home');
html2canvas(home).then(function(canvas) {
home.appendChild(canvas);
var basic = canvas.toDataURL();
var item = {};
item["image"] = basic;
item["width"] = 595;
data_1.push(item);
});
}
function options() {
var temp_cnt = 0;
$('.tour_options_table_data_info').each(function( index, element ) {
html2canvas(element).then(function(canvas) {
element.appendChild(canvas);
elem = canvas.toDataURL();
var item = {};
item["image"] = elem;
item["width"] = 595;
data_1.push(item);
});
});
}
function inclusions() {
$('.inc-main1,.inc-main2,.inc-main3').each(function( index, element ) {
html2canvas(element).then(function(canvas) {
element.appendChild(canvas);
elem = canvas.toDataURL();
var item = {};
item["image"] = elem;
item["width"] = 595;
data_1.push(item);
});
});
}
function home() 应该首先被调用,options() 应该被调用第二个,以此类推
我有$.when() 喜欢
$.when(home(),options(),inclusions()).done(function(a,b,c) {
console.log(a,b,c);
})
但它不会按顺序调用函数 请在这里给我建议。
【问题讨论】:
-
无法按照您的意愿执行此操作。如果下一个请求中需要来自一个请求的数据,那么您将必须按顺序执行它们 - 即。将它们链接在它们的回调中。
-
@RoryMcCrossan 我只想按顺序将数据推送到
data_1数组中,我的意思是首先它应该有home()然后它应该有options()数据,是否可以不链接他们的回调? -
如果能识别出数组中每个请求的数据,使其可以通过
sort()运行,那么可以,否则不行。 -
@RoryMcCrossan 如果我不使用 prev 函数数据进入 next 那么它可以按顺序调用它吗?
-
你试过
$.when({}).then(home).then(options).then(inclusions)吗?
标签: javascript jquery promise