我有一个回调函数,它被我无法控制的其他对象调用。我需要等到这个回调函数被调用,我不在乎是谁调用的。
var successFunc = function() {
// do stuff
}
myObject.onSuccess = successFunc;
// hang on until successFunc is called...
我找到了这个黑客的解决方法,但它很糟糕:
var completed = false;
var successFunc = () => {
// do stuff
completed = true;
}
myObject.onSuccess = successFunc;
while (!completed) {
sleep(200); // sleeps for 200 ms
}
尝试settimeout函数
setTimeout(() => {
}, timeout);
您可以使用wait/async:
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/await
var myObject = {
promiseCreation() {
return new Promise(resolve => {
setTimeout(() => {
resolve(true);
}, 2000);
});
}
}
var successFunc = () => {
completed = true;
console.log('win');
};
myObject.onSuccess = successFunc;
var asyncfunc = async () => {
var test = await myObject.promiseCreation();
//do thing after promise resolved
myObject.onSuccess();
}
asyncfunc();
创建一个promise,以某种方式将其解决
函数作为回调传递给未知调用方,监听promise的解决方案:
let callback;
const promise = new Promise(r => callback = r);
promise.then(() => console.log('unknown caller called'));
setTimeout(function unknownCaller() {
console.log('randomly calling back');
callback();
}, Math.random() * 5000);
问题内容: 我已经审查了很多有关此类问题的答案,但现在我对最佳方法感到困惑。鉴于最新的jquery,我想 调用一个ajax函数 做ajax处理(成功或错误)//正常工作 成功或错误时,将状态返回到调用函数以进行进一步处理 在调用函数(doAjax)中,如何等待回调,然后完成对成功或错误的处理(在这种情况下,成功时清除表格,错误时保持原样) 感谢任何建议, Art [EDIT] 你们发现有一个错字,
问题内容: 我知道这个问题以前曾被问过,但是所有解决方案都不适合我。 我有一个将参数发送到API的函数,并以列表的形式返回数据。我有一个UITableView设置为使用该列表,但是它在列表分配给变量之前运行。 码: 如果不立即将其作为重复投票,我将不胜感激,这是我尝试的方法。 派遣组 信号量计时 运行变量 其中包括= self和= self 。 编辑:要求提取项目, 问题答案: 您不能-也不应该-
问题内容: 我的代码在javascript中看起来像这样: 在完成所有这些异步调用之后,我想计算所有数组的最小值。 我要如何等待所有人? 我现在唯一的想法是拥有一个名为done的布尔数组,并在第i个回调函数中将done [i]设置为true,然后说while(不是全部都完成了){} 编辑:我想一个可能但很丑陋的解决方案是在每个回调中编辑完了的数组,然后如果每个回调中都设置了所有其他完成,则调用一个
问题内容: 我有一个简化的函数,看起来像这样: 基本上,我希望它调用,并返回在回调lambda中给出的响应。但是,上面的代码不起作用,只是立即返回。 只是出于非常骇人的尝试,我尝试了以下无效的方法,但是至少您了解了我要实现的目标: 基本上,实现此目的的“ node.js /事件驱动”良好方式是什么?我希望我的函数等待,直到调用回调,然后返回传递给它的值。 问题答案: 做到这一点的“良好的node.
我使用的是react native而不是expo,当尝试使用UseState设置值时,它不会立即设置,并且我无法获取值在另一个功能中。 如何让它等待设置,然后调用函数pressed()
我的JavaScript代码如下所示: 完成所有这些异步调用后,我想计算所有数组的最小值。 我怎么能等到他们所有人呢? 我现在唯一的想法是有一个布尔数组叫做done,并在第i个回调函数中将done[i]设置为true,然后说while(not all are done){} edit:我想一个可能的,但很难看的解决方案是在每个回调中编辑done数组,然后在每个回调中设置了所有其他done的情况下调
问题内容: 当使用简单的回调(例如下面的示例)时: 如何更改功能以使用异步/等待?具体来说,假设“ someEvent”被保证只能被调用一次,那么我希望函数测试是一个异步函数,该异步函数在执行回调之前不会返回,例如: 问题答案: 不是魔术。异步函数是可以为您解开Promises的函数,因此您需要返回一个Promise才能起作用。像这样: 然后 但这也是一个谎言,因为异步函数也返回Promises本