小编Elf*_*erg的帖子

你如何使用一组jQuery Deferreds?

我有一个应用程序需要按特定顺序加载数据:根URL,然后是模式,然后最终使用各种数据对象的模式和URL初始化应用程序.当用户导航应用程序时,将加载数据对象,根据模式进行验证并显示.当用户CRUD数据时,模式提供首次通过验证.

我在初始化时遇到问题.我使用Ajax调用来获取根对象$ .when(),然后创建一个promises数组,每个模式对象一个.这样可行.我在控制台中看到了fetch.

然后我看到所有模式的获取,因此每个$ .ajax()调用都有效.fetchschemas()确实返回了一个promises数组.

但是,最终when()子句永远不会触发,并且"DONE"字样永远不会出现在控制台上.jquery-1.5的源代码似乎暗示"null"可以作为传递给$ .when.apply()的对象,因为when()将构建一个内部Deferred()对象来管理列表,如果没有对象是传入

这使用Futures.js.如果不是这样的话,应如何管理jQuery Deferreds数组呢?

    var fetch_schemas, fetch_root;

    fetch_schemas = function(schema_urls) {
        var fetch_one = function(url) {
            return $.ajax({
                url: url,
                data: {},
                contentType: "application/json; charset=utf-8",
                dataType: "json"
            });
        };

        return $.map(schema_urls, fetch_one);
    };

    fetch_root = function() {
        return $.ajax({
            url: BASE_URL,
            data: {},
            contentType: "application/json; charset=utf-8",
            dataType: "json"
        });
    };

    $.when(fetch_root()).then(function(data) {
        var promises = fetch_schemas(data.schema_urls);
        $.when.apply(null, promises).then(function(schemas) {
            console.log("DONE", this, schemas);
        });
    });
Run Code Online (Sandbox Code Playgroud)

jquery jquery-deferred .when

132
推荐指数
3
解决办法
6万
查看次数

Mongoose:ObjectId比较失败不一致

我有一个简单的工具来构建文档集合,然后自动格式化为EPUB或LaTeX渲染,写在ExpressJS之上.我正在使用Coffeescript,如果这很重要(我对此表示怀疑).

使用Mongoose,我有以下内容:

DocumentSchema = new Schema
    title:     String

Offrefs = new Schema
    ref:       { type: ObjectId }
    isa:       String

BinderSchema = new Schema
    title:     String
    contains:  [Offrefs]
Run Code Online (Sandbox Code Playgroud)

Offrefs没有指定它所引用的内容,因为我希望能够在其他绑定器中包含一些绑定器,以创建逻辑集合:"这些是用于打印机","这些是用于epub","这些只是web, "等等(我把所有杂项都删掉了.)

不幸的是,我遇到了查询,对于检索到的对象

(story._id == offref.ref) -> True 
Run Code Online (Sandbox Code Playgroud)

这两个确实看起来一样.但:

(binder._id == offref.ref) -> False
(String(binder._id) == String(offref.ref)) -> True
Run Code Online (Sandbox Code Playgroud)

并且最后两个中两个引用的视觉比较,它们相同的ID号,但是ObjectId对象没有正确比较.

我不想不断地进行字符串转换,这在我将这些复杂对象转换为数据树时非常有可能.树关系是任何数据库中的熊; 他们在MongoDB中应该不难.

你如何在MongoDB中进行ObjectId比较?

mongoose mongodb node.js

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

什么nodejs库最像jQuery的延迟?

我已成为jQuery新的和令人惊讶的Deferred模块的熟练用户,并且由于我正在使用更多的Node.js,我发现自己想要在我的Node.js编程中完全喜欢它的东西:回调阻塞直到随着任务的复杂性增加,可以自由地随意添加到数组中 - 例如当处理数据树时,其大小在开始时是未知的任务.

但是node-fibers需要一个全新的可执行文件,Q()界面只是node-step让人困惑,而且似乎只能处理单任务同步.

有人刚刚将jQuery的Deferreds移植到节点就绪形式吗?它似乎不太可能,Deferreds似乎也不依赖于DOM可用的功能,但我没有找到服务器端的等价物.

jquery asynchronous node.js

26
推荐指数
3
解决办法
8404
查看次数

有关Backbone的深度数据结构的任何建议吗?

我对Backbone感到头痛.我有一组指定的记录,其中有子记录,例如:外科医生有预定程序,程序有设备,有些设备有消耗品需求(气体,液体等).如果我有一个Backbone收集外科医生,那么每个外科医生都有一个模型 - 但他的程序,设备和消耗品在从JSON解压缩后都将是简单的'Javascript数组和对象.

我想我可以在SurgeonsCollection中使用parse()来创建新的ProcedureCollections,然后创建新的EquipmentCollections,但过了一段时间,这就变成了毛球.为了使服务器端合理,有一个单一的联系点,需要一名外科医生和他的东西作为POST--所以在ConsumableModel上自动传播'set'以触发层次结构中的'save'也会使整个分层方法模糊.

还有其他人遇到过像这样的问题吗?你是怎么解决的?

javascript backbone.js

21
推荐指数
1
解决办法
4094
查看次数

在Rust中,引用如何成为指向指针的指针?

今天的Rust之谜来自The Rust Programming Language,第一版的第4.9节.引用和借用的示例有这个例子:

fn main() {
    fn sum_vec(v: &Vec<i32>) -> i32 {
        return v.iter().fold(0, |a, &b| a + b);
    }

    fn foo(v1: &Vec<i32>) -> i32 {
        sum_vec(v1);
    }

    let v1 = vec![1, 2, 3];

    let answer = foo(&v1);
    println!("{}", answer);
}
Run Code Online (Sandbox Code Playgroud)

这看似合理.它打印出"6",这是你所期望如果 vsum_vec是一个C++参考; 它只是一个内存位置的名称,v1我们定义的向量main().

然后我sum_vec用这个替换了身体:

fn sum_vec(v: &Vec<i32>) -> i32 {
    return (*v).iter().fold(0, |a, &b| a + b);
}
Run Code Online (Sandbox Code Playgroud)

它按预期编译和工作.好吧,那不是......完全疯了.编译器试图让我的生活更轻松,我明白了.令人困惑的是,我必须记住这个语言的特定时态,但并不完全是疯狂的.然后我尝试了:

fn sum_vec(v: &Vec<i32>) -> i32 {
    return (**v).iter().fold(0, |a, &b| …
Run Code Online (Sandbox Code Playgroud)

rust

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

如何重用 sqlx::Executor?

我正在尝试使用 SQLX 来开发 Rust 应用程序服务器作为后端存储。它适用于具有一些特殊默认行为的原始 CMS,即:如果找不到页面,则自动生成带有一些空白内容的页面。我希望能够重用调用 SQL 的函数,因此我希望它们采用实现该sqlx::Executor特征的类型,包括&mut sqlx::Connection&mut sqlx::pool::PoolConnection&mut sqlx::Transaction

每个只需调用数据库一次的函数就可以很好地工作!

但是,我似乎无法重复使用执行器。在我确定页面不存在后调用此函数;我创建一个事务并使用 an&mut Transaction作为e参数调用它:

async fn create_page_for_title(e: impl Executor<'_, Database = Sqlite>, title: &str) -> SqlResult<RawPage> {
    let newcontent_id = insert_new_root_content(e).await?;
    let newpage = insert_new_page(e, title, newcontent_id).await?;
    Ok(newpage)
}
Run Code Online (Sandbox Code Playgroud)

Rust (1.46) 是这样说的:

Error[E0382]: use of moved value: `e`
   --> src/store.rs:239:30
    |
230 | async fn create_page_for_title(e: impl Executor<'_, Database = Sqlite>, title: &str) -> …
Run Code Online (Sandbox Code Playgroud)

rust rust-sqlx

8
推荐指数
0
解决办法
1915
查看次数

你如何在Coffeescript中进行匿名课程?

我有一个有效的coffeescript/backbone成语,如下所示:

SidebarWidgets = ((() ->
    SidebarWidgets = { }

    class SidebarWidgetPrototype extends Backbone.View
        initialize: (options) ->
            @template = $(options.templateId).html()
        render: () ->
            $(@el).html(_.template(@template, @model.toJSON()))
            @el

    class SidebarWidgets.user extends SidebarWidgetPrototype
    class SidebarWidgets.shoppingcart extends SidebarWidgetPrototype
    class SidebarWidgets.messages extends SidebarWidgetPrototype
    SidebarWidgets
)())

class Sidebar extends Backbone.View
    views: ['user', 'shoppingcart', 'messages']
    initialize: (options) ->
        @subviews = { }
        _.each(@views,(v) =>
            subviews[v] = news SidebarWidgets[v](
                model: cxDatasets[v]
                id: 'sidebar-' + v
                templateId: '#sidebar-' + v + 'template'
            )
        )
    render: () ->
        $(@el).html()
        _.each(@views, (v) …
Run Code Online (Sandbox Code Playgroud)

coffeescript backbone.js

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

在CouchDB中,"这个"指的是什么?

我正在尝试理解CouchDB和couchapp,并且正如我所经历的那样,我看到在任何给定的环境中都缺乏对"this"的使用.我理解show对象获取文档和请求,并允许对列表和视图进行操作.这些操作都是Javascript对象.但CouchApp似乎也存储了各种各样的东西:README文件,Mustache模板等等.它必须以某种方式访问​​它们.this操作员是否show以某种方式提供对设计文档的访问权限,通过除require语法之外的某些方式提供对对象的访问?

在Javascript中,this必须定义某种方式在每个上下文中,特别是"有一个与每一个活动的执行上下文相关联的值,这个值取决于主叫方和被执行的代码的类型,并且当控制进入执行上下文被确定.与执行上下文关联的值是不可变的"(ECMA-262 Spec,第3版,第10.1.7节).在执行CouchDB设计doc show函数的上下文中它意味着什么?一个viewlist功能?

javascript couchdb

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

Node.js和Filesystem:这是竞争条件吗?

我在类中有以下代码.(这是coffeescript--它是一个couchdb实用程序! - 但这确实是一个node.js问题).我正在尝试使用Node 0.49做Node Node,这意味着使用异步调用来进行文件系统操作.起初,我把头发拉了出来,因为this.sentinel在加工过程中几次都没有了,所以我知道我在那里做错了.但后来我遇到了一个更奇怪的问题:在load_directory中,看到那些console.log()调用?当我运行它时,请注意何时发生.

check_sentinel: ->
    @sentinel--
    if @sentinel == 0
        @emit('designDirLoaded', @object)

load_file: (rootdir, filename, object) ->
    @sentinel++
    fname = path.join(rootdir, filename)
    @manifest.push(fname)
    fs.readFile fname, (err, data) =>
        object[filename] = data
        @check_sentinel()

load_directory: (dirpath, object) ->
    @sentinel++
    fs.readdir dirpath, (err, files) =>
        for fname in files
            console.log("X1: ", fname)
            fs.stat path.join(dirpath, fname), (err, stats) =>
                console.log("X2: ", fname)
                if stats.isFile()
                    @load_file(dirpath, fname, object)
                if stats.isDirectory()
                    object[fname] = {}
                    @load_directory(path.join(dirpath, fname), object[fname])
        @check_sentinel()
Run Code Online (Sandbox Code Playgroud)

这是我得到的:

X1: …
Run Code Online (Sandbox Code Playgroud)

node.js coffeescript

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

Python本身是如何测试的?

Python本身是如何测试的?不,"我如何在Python中编写单元测试?" 但是"CPython,Pypy等运行测试的合规套件在哪里断言它们是Python版本-XY符合?"

python网站提到了pythontest.net,但这似乎只是测试设施的目标,而不是合规套件本身的一部分或资源.

python testing

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