小编Ada*_*son的帖子

在jQuery 1.8中使用pipe()和then()文档与现实

更新:由于文档准确且最新,此问题现在已过时.

我已经探索了一下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():

描述:过滤和/或链接延迟的实用方法.

据我所知,从历史上看,它们的行为略有不同,但在管道文档或当时的文档中,它甚至没有说这两个函数现在完全相同.

所以,这是我的两部分问题:

  1. 为什么jQuery 1.8 之间的文档pipe()then()不同之处?
  2. 为什么then()返回一个新的延迟对象?这种行为完全没有记录(文档只是说它返回Deferred,而不是它是一个新的).我知道这样做有用(即实现所有pipe()的功能),但从哲学上讲,为什么会这样呢?鉴于then()(附加处理程序)的描述,这是不必要的.

更新

我甚至会说这些then()文档具有误导性和不准确性:

由于deferred.then 返回延迟对象,因此延迟对象的其他方法可以链接到此方法,包括其他.then()方法.

也许它只是模糊,但它意味着它返回你then()为链接调用的延迟对象,而实际上它返回一个全新的对象....

再次更新

似乎文档完全错误/过时了!所以这就解释了为什么文档没有提到它们是同一个东西.但是,我的第二个问题仍然存在.原因then()是简单地返回一个新的延迟,以便它pipe()可以变得等效吗?

javascript jquery jquery-deferred

30
推荐指数
1
解决办法
1万
查看次数

.CSHTML中的Visual Studio 2010代码格式 - 不正确的缩进

解释非常简单的问题:在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来格式化后出现的.其他人有这个问题吗?这是怎么回事?

.net visual-studio-2010 razor

15
推荐指数
1
解决办法
5144
查看次数

引导摩卡测试套件

我在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首先加载引导脚本,或者创建功能相同的东西?

mocha.js node.js

9
推荐指数
1
解决办法
5463
查看次数

Hapi不会从Boom错误返回数据属性

从我的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"}

它缺少提供错误细节的数据对象!这是怎么回事?

javascript hapijs

9
推荐指数
2
解决办法
4247
查看次数

如何使用require.js加载带有noConflict的jQuery

我试图通过使用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时,有什么奇怪的 …

javascript jquery requirejs

8
推荐指数
1
解决办法
1万
查看次数

直接从Node运行Grunt任务

如何直接从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很新,所以我可能错过了一些明显的东西.我怀疑我用来"运行"任务的命令只是将它排队,并且实际上并没有开始运行.但是,我找不到手动运行文档的文档.

javascript node.js gruntjs

8
推荐指数
1
解决办法
7251
查看次数

Backbone JS Promises在模型上设置属性之前解析

使用骨干模型,假设它从服务器获取一些额外的属性(如"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在我的附加处理程序之前发生了吗?

javascript jquery backbone.js

7
推荐指数
1
解决办法
2143
查看次数

Visual Studio 2010:同时调试多个请求(烦人!)

设置

我有一个 MVC 应用程序,它向我的控制器发出 AJAX 请求。JavaScript 正在发出多个此类请求。

在被调用的控制器上,我有一个断点。

烦恼

当我想调试该控制器操作方法时,我击中了断点,按 F10 继续,但随后第二个请求到来,我再次击中断点!我现在有两个请求流经我的代码,并在两个请求之间按 F10 步骤,使得调试几乎不可能,因为当前行在文件之间上下跳跃等,没有任何一致的流程,因为它正在跟踪多个请求当前调试会话!

我的问题

我可以告诉一个请求只是……离开……而不影响另一个请求吗?我尝试仅 F5ing 一个请求,但这会使两个请求都继续,而不仅仅是当前的请求。

visual-studio-2010 visual-studio

6
推荐指数
1
解决办法
1131
查看次数

用于 WebView 请求的自定义 HTTP 标头

是否可以在 iOS 上修改 React Native WebView 组件的 HTTP 请求标头?

我知道该onShouldStartLoadWithRequest功能,但这似乎不允许进行任何修改。

react-native

6
推荐指数
1
解决办法
5346
查看次数

使用React Native的Babel插件(babel-plugin-module-alias)

我想用巴贝尔-插件模块别名从转换模块路径../../../../components/fooapp/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 …

reactjs babeljs react-native

5
推荐指数
1
解决办法
2556
查看次数