我想在我的前端应用程序中使用(本机)promises来执行XHR请求,但没有庞大框架的所有tomfoolery.
我希望我的XHR返回的希望,但是,这并不工作(给我:Uncaught TypeError: Promise resolver undefined is not a function)
function makeXHRRequest (method, url, done) {
var xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onload = function() { return new Promise().resolve(); };
xhr.onerror = function() { return new Promise().reject(); };
xhr.send();
}
makeXHRRequest('GET', 'http://example.com')
.then(function (datums) {
console.log(datums);
});
Run Code Online (Sandbox Code Playgroud) 考虑这个简单的代码:
"use strict";
var obj = {
f: function() {
this.prop = 'value';
g.bind( this )();
}
};
function g() {
console.log( this.prop );
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试验证此代码,jshint会Possible strict violation.在我调用时给出错误console.log( this.prop );.这是因为this在函数中严格模式下未定义.
但是我在调用它之前绑定了这个函数,所以它this是正确的对象.
我正在使用这种"设计模式"来避免使主要对象混乱.传递参数中的属性也会使函数混乱,所以我拒绝这样做.此外,这正是bind为了什么.
有没有办法让JSHint让我这样做?
相关:JavaScript KeyCode与CharCode
这里有一些你可以在家里或在jsfiddle中尝试的代码:
el.addEventListener( 'keyup', function( e ) {
console.log( 'Keyup event' );
console.log( e.keyCode );
} );
el.addEventListener( 'keypress', function( e ) {
console.log( 'Keypress event' );
console.log( e.keyCode );
} );
Run Code Online (Sandbox Code Playgroud)
为什么keyCode不同?
我可以理解为什么人们只应该使用按键,但我不明白的是,在键盘上给出相同的按键时,两个按键事件如何给出不同的keyCodes.
PS:我并不担心遗留的浏览器支持,我在Chrome中尝试了这个并且感到惊讶,并且找不到解释.
我正在寻找一种方法来确定模块是否可用.
例如,我想以mongodb编程方式检查模块是否可用.
此外,如果找不到模块,它不应该暂停程序,我想自己处理.
PS:我添加了这个问题,因为谷歌没有帮助.
可能重复:
JavaScript函数别名似乎不起作用
相关jsfiddle:http://jsfiddle.net/cWCZs/1/
以下代码完美运行:
var qs = function( s ) {
return document.querySelector( s );
};
qs( 'some selector' );
Run Code Online (Sandbox Code Playgroud)
但以下不是:
var qs = document.querySelector;
qs( 'some selector' ); // Uncaught TypeError: Illegal invocation
Run Code Online (Sandbox Code Playgroud)
我不明白为什么.
我的困惑来自于这样的事实:
function t() {
console.log( 'hi' );
}
var s = t;
s(); // "hi"
Run Code Online (Sandbox Code Playgroud) 我目前正在学习如何在nodejs中使用promises
所以我的第一个挑战是列出目录中的文件,然后使用异步函数获取每个步骤的内容.我提出了以下解决方案,但有一种强烈的感觉,这不是最优雅的方式来做到这一点,尤其是我将异步方法"转变"为承诺的第一部分
// purpose is to get the contents of all files in a directory
// using the asynchronous methods fs.readdir() and fs.readFile()
// and chaining them via Promises using the bluebird promise library [1]
// [1] https://github.com/petkaantonov/bluebird
var Promise = require("bluebird");
var fs = require("fs");
var directory = "templates"
// turn fs.readdir() into a Promise
var getFiles = function(name) {
var promise = Promise.pending();
fs.readdir(directory, function(err, list) {
promise.fulfill(list)
})
return promise.promise;
}
// turn fs.readFile() into a Promise …Run Code Online (Sandbox Code Playgroud) 漂亮的东西与普通的JavaScript将能够使用forEach,map,filter等,在项目返回的document.querySelectorAll,document.getElementsBy*等等.
这样可以减少对jQuery的依赖,并简化代码.现在,这就是我们如何以丑陋的方式做到这一点:
[].forEach.call( document.querySelectorAll(sel), function(el) {
});
Run Code Online (Sandbox Code Playgroud)
这是......详细.
任何方式能够立即使用forEach和喜欢的元素返回?
您可能知道,在HTML5规范中,我们为<input>元素提供了一些新属性,例如required和pattern.这提供了验证用户输入的好方法,我们甚至可以使用CSS和伪选择器对其进行可视化.例
HTML
<input type="number" pattern="\d+" required/>
Run Code Online (Sandbox Code Playgroud)
CSS
input:required:valid {
border: 1px solid green;
}
input:required:invalid {
border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
如果该<input>元素是元素的一部分<form>,则用户将无法提交该元素invalid state.
但是,我的问题是,如果我们想要使用没有<form>元素的新属性会怎么样?有没有办法直接通过ECMAscript 访问这样一个节点的当前状态<input>?
有什么事吗?有听众吗?
什么是在Android网络浏览器上删除cookie的javascript.将cookie的过期日期设置为过去日期的常用方法在android Web浏览器中不起作用.
例如,以下代码适用于桌面Web浏览器和移动Safari,但在Android Web浏览器中不起作用.
document.cookie = 'cookiename=cookievalue; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/';
Run Code Online (Sandbox Code Playgroud) 是否有可能轮换世界的轴而不是物体?
我需要做一些物体的旋转,但是在第一次旋转后,我不能像我想的那样做其他旋转.
如果无法在世界轴上进行旋转,我的第二个选择是在第一次旋转后重置轴.这有什么功能吗?
我无法使用,object.eulerOrder因为它在我object.eulerOrder="YZX"进行一些旋转后设置时会改变对象的方向.