javascript中同步函数执行中的问题
issue in synchronized function execution in javascript
我正在尝试同步其中包含AJAX调用的三个函数。
main(){
compileTemplate();
}
compileTemplate(){
func1();
func2();
func3();
}
each func has structure like :
func(){
$.when($.get(url)).then(func(d)
{//do something});
每个func()都是自己完成的。我需要当func1完成时,func2应该开始。
检查
$.when(func1()).then(func2());
但它不起作用。请大家有任何想法。
确保func1
、func2
和func3
的返回值为promise:
function func1() {
var d = new $.Deffered();
setTimeout(function () {
d.resolve();
}, 1000);
return d.promise();
}
function func2() {
return $.ajax(/* .. */);
}
function func3() {
return /* etc */
}
然后你可以:
$.when(func1()).then(func2).then(func3); // notice the () or lack thereof
或者:
$.when(func1()).then(function () {
return func2();
}).then(function () {
return func3();
});
如果你不知道func1
、func2
和func3
是否总是返回承诺,这仍然有效,但你等不及了。
如果你这样做:
$.when(func1()).then(func2()).then(func3());
func1
、func2
加func3
将立即调用,而不是串行调用。这相当于:
var a = func1();
var b = func2();
var c = func3();
$.when(a).then(b).then(c);
//or
$.when(a, b, c);
function func1() {
if (ajaxObject.readyState == 4 && ajaxObject.status == 200) {
ajaxObject.onreadystatechange = func2;
ajaxObject.send();
}
}
function func2() {
if (ajaxObject.readyState == 4 && ajaxObject.status == 200) {
ajaxObject.onreadystatechange = func3;
ajaxObject.send();
}
function func3() {
}
相关文章:
- AJAX成功回调-执行javascript时出现问题
- JavaScript 中的执行顺序问题
- 使用 GitHub API 在 dojo 中执行 PUT 更新会返回 400:解析 JSON 时出现问题
- 在ajax.load调用后执行javascript时出现问题
- 带有两个提交按钮的提交表单,每个按钮执行不同的操作问题
- javascript中同步函数执行中的问题
- mongoose中嵌套查询执行的问题
- I'我在使用聚合核心ajax发送表单结果时遇到问题-go没有执行
- JS函数执行出现问题
- 从javascript或JQuery执行服务器端cgi代码时遇到问题
- 无法使用谷歌地图在“文档”上执行“写入”(信息窗口问题)
- 我在 JavaScript 中的自执行匿名函数有什么问题
- Java脚本(根本没有)被I.E.或Firefox执行,但Chrome没有问题
- onscroll 函数执行多个条件语句的问题
- 代码只是没有执行,可能有语法问题,或者我可能完全错了
- jQuery中嵌套的.each()循环异步执行的问题
- Javascript 执行问题
- 解决所有延迟问题后执行某些操作
- JS自执行函数在头中创建文本节点时出现问题
- 使用ibm_db模块在Node JS中执行prepared语句时出现问题