gpt4 book ai didi

javascript - 如何强制 javascript 等待/阻塞,直到延迟的作业完成?

转载 作者:行者123 更新时间:2023-11-28 09:06:27 26 4
gpt4 key购买 nike

我有一些代码,例如:

var filteredData = [];

asyncFunc().done(function () {
filteredData = blablabla...
});

return filteredData;

这是一个即将交付的项目。由于现有的代码/设计,我无法将其更改为 callback$.Deffered

是否可以强制它等到aysncFunc完成其工作,然后返回我想要的真实filteredData

编辑:

@MerynStol 你是对的。异步被发送到作业队列的最后一个(我忘了这个术语),它位于whilereturn之后。所以当while结束时,return立即执行。

我应该继续这样做还是尝试争取更多时间进行重组?

最佳答案

您可以扩展Function原型(prototype):

Function.prototype.and = Function.prototype.and || function(fn){
this();
var args = [].slice.call(arguments), arg;
while (args.length) {
arg = args.shift();
if (arg instanceof Function) {
arg();
}
}
}

并将其与 comma operator 一起使用像这样:

var filteredData = [];
return (asyncFunc.and( function () {
filteredData = /* do stuff */
} ), filteredData);

或者如果方法done按预期工作,只需使用:

var filteredData = [];
return (asyncFunc().done(function () {
filteredData = /*blablabla...*/
}), filteredData);

关于javascript - 如何强制 javascript 等待/阻塞,直到延迟的作业完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16996726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com