我有两个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?
我遇到了普通(非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) 我想像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()完全完成后启动..对吗?
那么,我该如何使这些功能按顺序工作呢?
我找到了一种使用回调函数的方法,但这对我来说还不够..
我是新来的angularjs.我$q在宁静的api电话中看到了检查承诺.
$q.defer()用于保留promise对象.我读到了承诺,但我没有得到任何东西.虽然我可以在没有的情况下进行api调用$q,但它在文章的某处使用.
所以我想知道$q没有api调用的确切用法和区别$q.
请帮助.谢谢
我有一个场景,我想在执行三个函数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)
任何帮助,将不胜感激.
我正在尝试用jquery旋转一个元素,然后我想在完成时做一些其他事情.旋转工作但为什么不警报?
看到jsfiddle: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)