相关疑难解决方法(0)

在继续之前等待一个功能完成的正确方法?

我有两个JS函数.一个叫另一个.在调用函数中,我想调用另一个,等待该函数完成,然后继续.所以,例如/伪代码:

function firstFunction(){
    for(i=0;i<x;i++){
        // do something
    }
};

function secondFunction(){
    firstFunction()
    // now wait for firstFunction to finish...
    // do something else
};
Run Code Online (Sandbox Code Playgroud)

我提出了这个解决方案,但不知道这是否是一个聪明的方法.

var isPaused = false;

function firstFunction(){
    isPaused = true;
    for(i=0;i<x;i++){
        // do something
    }
    isPaused = false;
};

function secondFunction(){
    firstFunction()
    function waitForIt(){
        if (isPaused) {
            setTimeout(function(){waitForIt()},100);
        } else {
            // go do that thing
        };
    }
};
Run Code Online (Sandbox Code Playgroud)

这是合法的吗?是否有更优雅的方式来处理它?也许用jQuery?

javascript jquery delay pausing-execution

144
推荐指数
7
解决办法
38万
查看次数

等到带有动画的功能完成,直到运行另一个功能

我遇到了普通(非ajax)函数的问题,这些函数在每个函数中都涉及很多动画.目前我只有一个setTimeout功能之间,但这并不完美,因为没有浏览器/计算机是相同的.

附加说明:它们都有单独的动画/等碰撞.

我不能简单地把一个放在另一个的回调函数中

// multiple dom animations / etc
FunctionOne();

// What I -was- doing to wait till running the next function filled
// with animations, etc

setTimeout(function () { 
    FunctionTwo(); // other dom animations (some triggering on previous ones)
}, 1000); 
Run Code Online (Sandbox Code Playgroud)

无论如何在js/jQuery中有:

// Pseudo-code
-do FunctionOne()
-when finished :: run -> FunctionTwo()
Run Code Online (Sandbox Code Playgroud)

我知道$.when()&$.done(),但那些是针对AJAX的......


  • 我的更新解决方案

jQuery有一个名为$ .timers的暴露变量(由于某种原因未在jQuery文档中列出),它包含当前正在进行的动画数组.

function animationsTest (callback) {
    // Test if ANY/ALL page animations are currently active …
Run Code Online (Sandbox Code Playgroud)

javascript jquery callback

67
推荐指数
2
解决办法
19万
查看次数

在javascript中制作同步功能?

我想像jQuery一样同步函数$.ajax({ .., async: false, .. });.

function A() { lalala .. };
function B() { dadada .. };
function C() { .. };
Run Code Online (Sandbox Code Playgroud)

那些都包括fadeIn,Out,slide等等.

但是我刚刚发现这些函数如下所示.

A();
B();
C();
Run Code Online (Sandbox Code Playgroud)

所有效果几乎同时开始.在我的理解中,这是因为函数同步调用但并不意味着函数B()在函数A()完全完成后启动..对吗?

那么,我该如何使这些功能按顺序工作呢?

我找到了一种使用回调函数的方法,但这对我来说还不够..

javascript jquery synchronous

9
推荐指数
1
解决办法
3万
查看次数

谁能解释在angularjs中使用$ q服务?

我是新来的angularjs.我$q在宁静的api电话中看到了检查承诺. $q.defer()用于保留promise对象.我读到了承诺,但我没有得到任何东西.虽然我可以在没有的情况下进行api调用$q,但它在文章的某处使用.

所以我想知道$q没有api调用的确切用法和区别$q.

请帮助.谢谢

angularjs

5
推荐指数
2
解决办法
2万
查看次数

在setTimeout完成执行后调用函数-Javascript

我有一个场景,我想在执行三个函数a(),b(),c()之后调用函数d(),这三个函数并行执行.

setTimeout(function a(){ alert("Hello A"); a()}, 3000);
setTimeout(function b(){ alert("Hello B"); b()}, 3000);
setTimeout(function c(){ alert("Hello C"); c()}, 3000);
Run Code Online (Sandbox Code Playgroud)

在完成所有函数执行后,我希望执行下面的函数d()

function d(){
console.log('hello D')
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

javascript jquery

3
推荐指数
1
解决办法
725
查看次数

用jquery旋转然后做其他事情

我正在尝试用jquery旋转一个元素,然后我想在完成时做一些其他事情.旋转工作但为什么不警报?

看到j​​sfiddle:JSFiddle

HTML:

<div class="square">click me</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.square{
background:red;
height:100px;
width:100px;
cursor:pointer;
Run Code Online (Sandbox Code Playgroud)

}

JS:

$('.square').click(function () {
  rotate($(this), -180, 1000);
});
function rotate(element, degrees, speed) {
    element.animate({ borderSpacing: degrees }, {
        step: function (now, fx) {
            $(this).css('-webkit-transform', 'rotate(' + now + 'deg)');
            $(this).css('-moz-transform', 'rotate(' + now + 'deg)');
            $(this).css('transform', 'rotate(' + now + 'deg)');
        },
        duration: speed
    }, function () {
        alert("I'm done");
    });
}
Run Code Online (Sandbox Code Playgroud)

html css jquery jquery-animate

0
推荐指数
1
解决办法
187
查看次数