我已经探索了一下jQuery的递延/无极API和我对之间的差异非常困惑pipe()和then()哲学和jQuery的文档.我发现从jQuery 1.8开始,pipe()只是then()的别名.
来自jQuery源码:
// Keep pipe for back-compat
promise.pipe = promise.then;
Run Code Online (Sandbox Code Playgroud)
然而,文档完全不同pipe(),then()因为它们被认为具有完全不同的用途.
说明then():
描述:添加在解析或拒绝Deferred对象时要调用的处理程序.
说明pipe():
描述:过滤和/或链接延迟的实用方法.
据我所知,从历史上看,它们的行为略有不同,但在管道文档或当时的文档中,它甚至没有说这两个函数现在完全相同.
所以,这是我的两部分问题:
pipe()和then()不同之处?then()返回一个新的延迟对象?这种行为完全没有记录(文档只是说它返回Deferred,而不是它是一个新的).我知道这样做有用(即实现所有pipe()的功能),但从哲学上讲,为什么会这样呢?鉴于then()(附加处理程序)的描述,这是不必要的.更新
我甚至会说这些then()文档具有误导性和不准确性:
由于deferred.then 返回延迟对象,因此延迟对象的其他方法可以链接到此方法,包括其他.then()方法.
也许它只是模糊,但它意味着它返回你then()为链接调用的延迟对象,而实际上它返回一个全新的对象....
再次更新
似乎文档完全错误/过时了!所以这就解释了为什么文档没有提到它们是同一个东西.但是,我的第二个问题仍然存在.原因then()是简单地返回一个新的延迟,以便它pipe()可以变得等效吗?
解释非常简单的问题:在Visual Studio 2010 SP1中,我在使用Razor时看到了使用大括号的奇怪缩进问题.
以下是它的外观:
<div>
<div>
<div>
<div>
@if (true)
{
<b>Hi</b>
}
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我用CTRL + K,D来格式化后出现的.其他人有这个问题吗?这是怎么回事?
我在Node JS应用程序中的多个文件中进行了大量测试.我想在Mocha执行任何测试文件之前运行bootstrap代码.例如,我可以在每个实际测试中设置全局变量.
global.chai = require('chai');
global.expect = chai.expect;
global.sinon = require('sinon');
Run Code Online (Sandbox Code Playgroud)
似乎Mocha按字母顺序加载/ test下的所有文件,所以如果我将这个引导代码命名为"bootstrap.js",而其他所有文件都在"B"之后用起始字母命名,那么"工作".
显然这很脆弱,但是我不想把这个样板需要我的支持库放在每个测试文件的顶部.
如何告诉Mocha首先加载引导脚本,或者创建功能相同的东西?
从我的Hapi路线回复Boom错误时......
{
method: 'PUT',
path:'foo',
handler: function (request, reply) {
reply(Boom.badRequest('something', { stuff: 'and more' }));
}
}
Run Code Online (Sandbox Code Playgroud)
...我收到以下回复:
{"statusCode":400,"error":"Bad Request","message":"something"}
它缺少提供错误细节的数据对象!这是怎么回事?
我试图通过使用require在noConflict模式下加载jquery
require.config({
paths: {
'jquery': 'libs/jquery-req',
underscore: 'libs/underscore',
backbone: 'libs/backbone'
},
shim: {
jquery: {
init: function() {
console.log('jq init');
var jq = this.jQuery.noConflict(true);
jq.support.cors = true;
return jq;
},
exports: '$'
},
backbone: {
deps: ['underscore', 'jquery'],
init: function() {
console.log('b init');
},
exports: 'Backbone'
},
underscore: {
exports: '_'
}
}
});
Run Code Online (Sandbox Code Playgroud)
并使用它:
define([
'jquery',
'underscore',
'backbone'
], function(jq, _, Backbone) {
console.log(jq);
var initialize = function() {
// Router.initialize();
};
return {
initialize: initialize
};
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,似乎从未调用过shim.jquery.init函数.有人可以帮我理解为什么吗?当我重命名jquery时,有什么奇怪的 …
如何直接从Node执行Grunt任务而不会出现在CLI中?
我有以下"POC"代码; 但是,"东西"永远不会被记录.
var grunt = require('grunt');
grunt.registerTask('default', 'Log some stuff.', function() {
console.log('stuff');
});
grunt.task.run('default'); // This is probably not the right command
Run Code Online (Sandbox Code Playgroud)
我对Grunt很新,所以我可能错过了一些明显的东西.我怀疑我用来"运行"任务的命令只是将它排队,并且实际上并没有开始运行.但是,我找不到手动运行文档的文档.
使用骨干模型,假设它从服务器获取一些额外的属性(如"FirstName"和"LastName"),我有类似以下内容:
var myModel = new Backbone.Model({ id: 10 });
var myOtherModel = new Backbone.Model({ id: 20 });
$.when(myModel.fetch(), myOtherModel.fetch()).done(function () {
console.log(myModel.toJSON());
});
Run Code Online (Sandbox Code Playgroud)
输出:
{id:10}
片刻后输出:
{id:10,名字:"Joe",姓氏:"Schmo"}
似乎Backbone的承诺存在缺陷,因为返回的jqXHR对象具有在骨干完成其自己的进程之前已经解决的承诺.
是这样的吗?还有其他必须做的事情来确保返回的承诺fetch()在所有Backbone的set完成之前都没有解决,或者至少set在我的附加处理程序之前发生了吗?
设置
我有一个 MVC 应用程序,它向我的控制器发出 AJAX 请求。JavaScript 正在发出多个此类请求。
在被调用的控制器上,我有一个断点。
烦恼
当我想调试该控制器操作方法时,我击中了断点,按 F10 继续,但随后第二个请求到来,我再次击中断点!我现在有两个请求流经我的代码,并在两个请求之间按 F10 步骤,使得调试几乎不可能,因为当前行在文件之间上下跳跃等,没有任何一致的流程,因为它正在跟踪多个请求当前调试会话!
我的问题
我可以告诉一个请求只是……离开……而不影响另一个请求吗?我尝试仅 F5ing 一个请求,但这会使两个请求都继续,而不仅仅是当前的请求。
是否可以在 iOS 上修改 React Native WebView 组件的 HTTP 请求标头?
我知道该onShouldStartLoadWithRequest功能,但这似乎不允许进行任何修改。
我想用巴贝尔-插件模块别名从转换模块路径../../../../components/foo到app/components/foo我的阵营本地项目.
我试图在两个地方独立修改babel配置,但都不起作用.
一,在我的项目的根部旁边index.ios.js:
{
"plugins": [
["babel-plugin-module-alias", [
{ "src": "./app", "expose": "app" }
]]
]
}
Run Code Online (Sandbox Code Playgroud)
两个,在/node_modules/react-native/packager/react-packager/.babelrc:
{
"retainLines": true,
"compact": true,
"comments": false,
"plugins": [
["babel-plugin-module-alias", [
{ "src": "./app", "expose": "app" }
]],
"syntax-async-functions",
"syntax-class-properties",
"syntax-trailing-function-commas",
"transform-class-properties",
"transform-es2015-arrow-functions",
"transform-es2015-block-scoping",
"transform-es2015-classes",
"transform-es2015-computed-properties",
"transform-es2015-constants",
"transform-es2015-destructuring",
["transform-es2015-modules-commonjs", {"strict": false, "allowTopLevelThis": true}],
"transform-es2015-parameters",
"transform-es2015-shorthand-properties",
"transform-es2015-spread",
"transform-es2015-template-literals",
"transform-flow-strip-types",
"transform-object-assign",
"transform-object-rest-spread",
"transform-react-display-name",
"transform-react-jsx",
"transform-regenerator",
"transform-es2015-for-of"
],
"sourceMaps": false
}
Run Code Online (Sandbox Code Playgroud)
它不会抛出任何错误,只是试图要求一个模块,因此import MyComponent from …
javascript ×5
jquery ×3
node.js ×2
react-native ×2
.net ×1
babeljs ×1
backbone.js ×1
gruntjs ×1
hapijs ×1
mocha.js ×1
razor ×1
reactjs ×1
requirejs ×1