2 renee1995 Renee1995 于 2017.09.18 13:56 提问

如何让JS确保上一个方法执行完毕再执行下一个方法?(纯js,不用jquery

downPdf.onclick = function() {
pageData='pppp';
console.log("进来了");
var infoHtml=document.getElementById("infoHtml");
a();
console.log("pageData-a-after:"+pageData);
b();

}
function a(){
setTimeout(function(){
pageData='pppp-a';
console.log("pageData-a-1000:"+pageData);

}, 1000);

}
function b(){
console.log("pageData-b:"+pageData);
}

console台打印:
进来了

pageData-a-after:pppp
pageData-b:pppp
pageData-a-1000:pppp-a

我想让他执行完a方法之后再进行后续的打印和b方法,而不是像上面那样?

2个回答

showbo
showbo   Ds   Rxr 2017.09.18 14:08
已采纳

a传入回调,后续代码放回调里面

     downPdf.onclick = function () {
        pageData = 'pppp';
        console.log("进来了");
        var infoHtml = document.getElementById("infoHtml");
        a(function () {////////
            console.log("pageData-a-after:" + pageData);
            b();
        });

    }
    function a(callback) {
        setTimeout(function () {
            pageData = 'pppp-a';
            console.log("pageData-a-1000:" + pageData);
            callback()//////////////
        }, 1000);

    }
    function b() {
        console.log("pageData-b:" + pageData);
    }
Renee1995
Renee1995 感谢!
10 个月之前 回复
sunny_desmond
sunny_desmond   Rxr 2017.09.18 14:16

ES6 的promise 可以完美解决你的问题

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
在JavaScript中想让一个函数执行完毕之后再执行下一个函数?
JavaScript中想让一个函数执行完毕之后再执行下一个函数
js 执行完一个函数之后再执行另外一个函数
一、第一种情况:运动函数执行完之后再执行另外一个函数 注释:按钮点击之后,div先显示出来,然后宽度和高度再增加到300px button class="btn">点击我button> div id="div2"> p>人的灵魂所必须的东西,是不需要用金钱来买的p> div> style> div{height: 200px;width: 200px;padding:15px
JQuery和Js中,如何让ajax执行完后再继续往下执行?
$.ajax        ({             cache: false,             async: false,   // 太关键了,学习了,同步和异步的参数             dataType: 'json', type: 'post',             url: "../handle/Ladder_Fee_Code.ashx?ajaxaction
Node.js的那些坑(三)——如何在异步方法都执行后再执行
在异步方法执行后再执行的直接解决方案就是写回调。 可是如果想让所有的(例如循环调用的若干次)异步方法全部执行完之后再执行接下来的方法该怎么办呢? 本文基于Promise语法,给出解决方案。
认识DOM和DOM加载过程以及如何让DOM加载完成后再执行js脚本文件
DOM,众所周知是文档对象模型。这其中文档是什么呢?对象模型是什么?针对的对象是哪些? 其实可以把网页看做是一种文档,而且是有结构的文档。 其次,网页中的各种标记或者叫做标签,可以映射成我们所谓的对象。我们写js一般就是对这些对象进行操作。关键是我们怎么获取到这些对象,无疑,这就是DOM的高超之处,它给我提供一种方便获取的对象的机制。当然,要搞清楚具体怎么获取的,我们不得不认识下一DOM中的M
js 满足一个条件后再执行函数,否则一直等待条件成立
回调函数(callback) function b(b){ alert(b); } function test(){ //a(b); delay(b,"#input1","直的吗 要要要");//b为回函数,第三个为传入参数给b使用 } //作用:传入一个函数作为参数,当满足某个选器长度大于1时,回调函数起作用 //参数:callback 回调函数 //参数:strId id
js中如何控制所有页面加载完成后,再执行某些方法
做页面时经常会遇到当前页面加载完成后,执行某些初始化工作。这时候就要知道如何判断页面(包括IFRAME)已经加载完成,代码如下:       document.onreadystatechange = statechange;       function statechange() {         if(document.readystate == 'complete') {  
在JQuery中让ajax执行完后再继续往下执行
$("#checkoutbt").click(function(){ $(".cart .list i.select").each(function(){ if(!$(this).hasClass("selected")){ deleid=$(this).attr('value'); $.get("./index.php?r=flow/DeleTempbasketItem
在jquery中,让ajax执行完后再往下执行
将async设置为false即可 var id =""; var no = "${no}"; //***// var msg; $.ajax({ type:"post", url:"ajaxAction.action", async:false,//设置同步/异步的参数[true异步 false同步] dat
js 等待function执行完
var judage = function(){   if($('#areaId').combotree('tree').tree('find','2')){    initSettActivityList();   }else{    setTimeout(judage, 500);    }  }  judage();