我很好奇所有的javascript回调是否都是异步的,或者只是在某些情况下是这种情况.此外,我确定是什么让javascript代码异步(或使用异步javascript的方法)在浏览器和nodejs之间有所不同,所以我想知道在每种情况下什么构成真正的异步javascript.
我的印象是,在下面的场景中,我实际上并没有编写异步代码.
function addOne(value){
value = value + 1;
return value;
}
function simpleMap(values, callback){
for(i = 0; i < values.length; i++){
val = values[i];
val = callback(val);
values[i] = val;
}
return values;
}
newValues = simpleMap([1,2,3], addOne);
Run Code Online (Sandbox Code Playgroud)
但是,例如,我知道jQuery的AJAX函数是真正异步的(不考虑现在可用的承诺).是什么让jQuery的AJAX异步?是否涉及XHR请求这么简单,在浏览器中,所有XHR请求都是异步的?
我对nodejs环境有同样的问题.节点中的某些东西只有在涉及文件i/o,process.nextTick,setTimeout或setInterval之类的东西时才能是异步的吗?为什么当我使用mongodb/mongoose进行数据库调用时,是异步的?幕后发生了怎样的事情呢?
异步"情况"是否由环境预先确定?或者是否有某种方法可以使自己的函数真正异步而不利用环境的非常特定的函数(例如xhr,节点中的文件io,process.nexttick等)?
基本上我正在寻找的是能够隐藏选项的下拉列表中的选项.所以,从技术上讲,它们仍然是选项,但你只是无法点击它们,因为它们是隐藏的.
我查看了文档并找到了与禁用相关的内容,不幸的是我非常特别想要隐藏项目的能力.有没有人有关于如何做到这一点的建议?
是否有可能做一些事情,让select在原始<option>元素和该元素的select2副本之间做一些特定的映射,这也可以.例如,假设"如果原始<option>类具有此类或具有此类属性,则选择下拉列表中的结果项将以这种方式构造".