gpt4 book ai didi

javascript - 是否可以将异步事件及其回调包装在返回 bool 值的函数中?

转载 作者:行者123 更新时间:2023-11-30 09:06:46 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的测试来创建一个图像元素,检查图像属性,然后返回 true/false。问题是使用 onload 事件会使测试异步。就其本身而言,这不是问题(使用回调就像我在下面的代码中所做的那样很容易),但我无法弄清楚的是如何将其封装到一个返回 bool 值的函数中。

我尝试了闭包、递归和自执行函数的各种组合,但都没有成功。

所以我的问题是:我是不是太过于密集而忽略了一些简单的事情,或者这实际上是不可能的,因为无论如何,我仍在尝试将异步函数包装在同步期望中?

代码如下:

var supportsImage = function(callback) {
var img = new Image();
img.onload = function() {
//Check attributes and pass true or false to callback
callback(true);
};
img.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';
};

supportsImage(function(status){
console.log(status);
});

明确地说,我想要的是能够将它包装在某种东西中,这样它就可以像这样使用:

if (supportsImage) {
//Do some crazy stuff
}

谢谢!

(顺便说一句,我知道有很多关于同步与异步混淆的 SO 问题。如果这可以减少到以前回答的问题,我们深表歉意。)

最佳答案

不,但是你可以将你的“疯狂的东西”传递给 supportsImage,例如

supportsImage(function(result){
if(result) {
//Do some crazy stuff
}
});

关于javascript - 是否可以将异步事件及其回调包装在返回 bool 值的函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549407/

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