我最近遇到了一个相当讨厌的错误,其中代码是<select>通过JavaScript动态加载的.这种动态加载<select>具有预先选择的值.在IE6中,我们已经有了修复所选内容的代码<option>,因为有时它<select>的selectedIndex值与所选<option>的index属性不同步,如下所示:
field.selectedIndex = element.index;
Run Code Online (Sandbox Code Playgroud)
但是,此代码无效.即使selectedIndex正确设置了字段,最终也会选择错误的索引.但是,如果我alert()在正确的时间插入声明,则会选择正确的选项.考虑到这可能是某种时间问题,我尝试了一些随机的东西,我之前在代码中看到过:
var wrapFn = (function() {
var myField = field;
var myElement = element;
return function() {
myField.selectedIndex = myElement.index;
}
})();
setTimeout(wrapFn, 0);
Run Code Online (Sandbox Code Playgroud)
这有效!
我已经找到了解决问题的方法,但是我很不安,因为我不知道为什么这会解决我的问题.有人有官方解释吗?使用"稍后"调用我的功能可以避免哪些浏览器问题setTimeout()?
我理解异步的基本内容:事情不按顺序执行.据我所知,有一些非常强大的东西...... 但对于我的生活,我无法绕过代码.让我们来看看我写过的异步Node.JS代码......但是没有真正得到.
function newuser(response, postData) {
console.log("Request handler 'newuser' was called.");
var body = '<html>' +
'<head>' +
'<meta http-equiv="Content-Type" content="text/html; ' +
'charset=UTF-8" />' +
'</head>' +
'<body>' +
'<form action=" /thanks" method="post">' +
'<h1> First Name </h1>' +
'<textarea name="text" rows="1" cols="20"></textarea>' +
'<h1> Last Name </h1>' +
'<textarea name="text" rows="1" cols="20"></textarea>' +
'<h1> Email </h1>' +
'<textarea name="text" rows="1" cols="20"></textarea>' +
'<input type="submit" value="Submit text" />' +
'</body>' +
'</html>';
response.writeHead(200, { "Content-Type": "text/html" });
response.write(body);
response.end(); …Run Code Online (Sandbox Code Playgroud) 我在Javascript中有一个异步函数,我添加了setTimeout.代码看起来像这样:
let timer;
clearTimeout(timer);
timer =setTimeout(() => {
(async() => {
await this._doSomething();
})();
}, 2000);
Run Code Online (Sandbox Code Playgroud)
setTimeout的puprose是在运行函数之前加2秒.确保用户停止输入.
我现在应该从此函数中删除async/await,因为setTimeout是异步的吗?
任何帮助在这里非常感谢!
当我输入最后一个数字时,第一个数字进入text-box(它消失)里面,它增加了一个额外的空格。
在我点击外部后,text-box它看起来不错,这是我在输入最后一个字符时需要的。
#number_text {
padding-left: 9px;
letter-spacing: 31px;
border: 0;
background-image: linear-gradient(to right, #e1e1e1 70%, rgba(255, 255, 255, 0) 0%);
background-position: left bottom;
background-size: 38px 1px;
background-repeat: repeat-x;
width: 220px;
box-sizing: border-box;
outline:none;
}Run Code Online (Sandbox Code Playgroud)
<input type="text" id="number_text" maxlength="6" pattern="\d{6}" value="1234" >Run Code Online (Sandbox Code Playgroud)
帮助我摆脱这个问题。谢谢
我正在解决这个有趣的 javascript 问题(面试问题),但我一直在思考如何使用 promise 来实现它。
问题:
用 JavaScript 编写一个调度程序,它接受最大并发任务数作为参数并调度任务(每个任务可能需要任意时间才能完成)。
请注意,在继续执行其他任务之前,我们一次只需要执行“n”个(并发)任务。
这是我的实现:
var exampleTaskA = function () {
setTimeout(function () {
console.log('Task A Done');
}, 1000);
};
function TaskRunner(concurrency) {
this.limit = concurrency;
this.store = [];
this.len = this.store.length;
}
TaskRunner.prototype.push = function (task) {
this.store.push(task);
function getWorker(store, limit) {
if(!store.length) return;
if(store.length <= limit) {
const cur = store.shift();
if(cur) cur();
getWorker(store, limit);
}
}
getWorker(this.store, this.limit);
}
var task = new TaskRunner(2);
console.log(task.push(exampleTaskA));
console.log(task.push(exampleTaskA));
console.log(task.push(exampleTaskA));
console.log(task.push(exampleTaskA));
console.log(task.push(exampleTaskA));
console.log(task.push(exampleTaskA));
console.log(task.push(exampleTaskA)); …Run Code Online (Sandbox Code Playgroud)javascript ×5
asynchronous ×3
css ×1
dom ×1
event-loop ×1
html ×1
jquery ×1
node.js ×1
settimeout ×1