小编Uma*_*air的帖子

Javascript创建对象 - 多种方法,任何差异?

我已经看到了一些在javascript中实例化对象的不同方法,想知道各种方法的优点/缺点以及为什么要使用其中一种方法.

方法1

var obj = {
    prop: value,
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

方法一是标准方法,没什么新的:)

方法2

var obj = new function() {
    var prop1 = value1;
    var fn1 = function() {
    };
    .
    .
    .

    this.prop2 = value2;
    .
    .
    .
}();
Run Code Online (Sandbox Code Playgroud)

函数方法,我想将此方法与方法3进行比较.函数方法主要用于封装(正确吗?)

方法3

var obj = (function() {
    var prop1 = value1;
    var fn1 = function() {
    };
    .
    .
    .

    return {
        prop2: value2,
        .
        .
        .
    }
})();
Run Code Online (Sandbox Code Playgroud)

通过这种方法,我不太清楚其使用背后的原因.它与方法2有何不同?两者都可用于封装逻辑.

是这样我们可以传递参数,所以我们可以处理任何潜在的冲突?例如jquery的$语法 - 但你也可以用方法2做到这一点......

谢谢.


编辑:


我知道方法1和3是相似的(因为它们都返回对象)但是方法3也创建了一个闭包.哪种方法2也有.

这是我的问题的基础,2和3都创建了闭包,但它们之间有什么区别.

javascript javascript-objects

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

tsqlt - 为单元测试创​​建单独的数据库

我已经开始使用tsqlt了,我的问题是,是否有可能只有测试内容的单独数据库?(表/ sp /汇编等).

此测试数据库将与实际/目标数据库位于同一实例上.

如果我试图伪造一个表,我会收到以下错误:

FakeTable could not resolve the object name, 'target_db.dbo.Sometable'
Run Code Online (Sandbox Code Playgroud)

有没有人有这方面的经验?

谢谢.

t-sql tsqlt

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

需要帮助找到正确的T-SQL查询

我不太清楚该怎么做.基本上我有一张这样的桌子

UserId       DateRequested           Approved ApprovedBy  Notes
------------ ----------------------- -------- ----------- -----
1            2011-05-26               0        NULL        NULL
1            2011-05-27               0        NULL        NULL
1            2011-05-28               0        NULL        NULL
1            2011-06-05               0        NULL        NULL
1            2011-06-06               0        NULL        NULL
1            2011-06-25               0        NULL        NULL
Run Code Online (Sandbox Code Playgroud)

这基本上包含员工请求假期的日子.现在,当授予一天或几天时,需要将此数据复制到表单的表中

UserId DateFrom DateTo
Run Code Online (Sandbox Code Playgroud)

所以基本上对于我想要的上述数据:

UserId DateFrom DateTo 
-------------------------------
1      2011-05-26 2011-05-28 
1      2011-06-05 2011-06-06 
1      2011-06-25 2011-06-25 
Run Code Online (Sandbox Code Playgroud)

即我想在DateFrom和DateTo中连续几天.现在我不知道如何在不使用while循环的情况下执行此操作.这是SQL,所以我更喜欢非迭代的解决方案.

请指教!!!

sql t-sql sql-server sql-server-2005 gaps-and-islands

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

带有 F# 的私有/受保护的 setter

我决定用 F# 与 MVC4 和 Nhibernate 一起进行一个相对较大的项目。

现在,在 C# 中,我通常使用 ORM 的做法是为某些属性(例如自动递增/身份属性、时间戳等)设置私有设置器。IE

public class Guide
{
    public int Id { get; private set; }
    public DateTime Created { get; private set; }

    public Guide()
    {
        Created = DateTime.Now;
    }
}
Run Code Online (Sandbox Code Playgroud)

这里 id 是一个“身份列”,ORM 将处理设置它的值。

在 F# 中,这是我目前所拥有的

type public Guide() =
    member val public Id = 0 with get, set
    member val public Created = DateTime.MinValue with get, set
Run Code Online (Sandbox Code Playgroud)

但是我遇到的问题是getter/setter不能有访问修饰符!

我是 F# 新手,所以我想知道执行此类操作的最佳方法。但是,我不只是想用 F# 重写 C# 代码!我想知道正确的(功能)方法。也许使用其他一些构造?

编辑:对于 NHibernate,在 setter …

nhibernate f# functional-programming c#-to-f#

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

SignalR连续消息传递

我有一个Web项目,需要从外部soap服务更新网页上的统计信息/日志.我决定采用的方法是使用signalR,通过使用代码执行服务方法并将结果返回给所有连接的客户端.此代码将持续执行,服务调用之间会有延迟.

我无法将所有碎片放在一起,可能是因为我不确定应该去哪里!这是我到目前为止所做的粗略细分

class Data { ... }

interface IDataService
{
    Task GetDataAsync(TimeSpan interval, CancellationToken cancellationToken, Action<Data> callback);
}

class DataService : IDataService
{
    private readonly ExternalService _externalService;

    public async Task GetDataAsync(TimeSpan interval, CancellationToken cancellationToken, Action<Data> callback)
    {
         while (!cancellationToken.IsCancellationRequested)
         {
              var data = await this._externalService.GetData();
              callback(data);

              await Task.Delay(interval).ConfigureAwait(false);
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以上面是从外部服务获取数据并执行回调的逻辑.至于signalR,我唯一做的就是如下

public class DataHub : Hub
{
    private readonly IDataService _service;

    public DataHub(IDataService service)
    {
        this._service = service;
    }

    public async Task GetData()
    {
        var tenSeconds = new TimeSpan(0, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net async-await signalr

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

Angular2组件加载外部js lib文件

我有一个使用JavaScript库的组件.目前我只是使用system.js来加载依赖项

public ngOnInit() {
    System.import('lib').then(() => this.createControl());
}
Run Code Online (Sandbox Code Playgroud)

然而,组件初始化的这种延迟导致另一个消耗组件的问题.基本上这个createControl功能运行得太晚了.

是否可以使用angular延迟整个组件的初始化,直到下载所有依赖项为止?

typescript systemjs angular

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

带有来自ajax调用的数据的angular2引导程序

我想用我从服务中检索的数据来引导我的应用程序.我正在做一些事情

let dependencies = [
    //... a load of dependencies
    MyService
];

let injector = Injector.resolveAndCreate(dependencies);
let service: MyService = injector.get(MyService);

service.getData() // returns observable
    .toPromise()
    .then((d) => {
        // use data to append to dependencies

        bootstrap(App, dependencies)
    });
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我不喜欢两次使用依赖数组,有没有更简洁的方法这样做?我可以在bootstrap之后向应用程序注入器添加内容吗?另外我注意到bootstrap函数返回一个promise,我可以使用这个promise来阻止应用程序的引导直到我的ajax请求完成之后吗?

当然,对于Injector我来说,我只能使用那些所需的依赖关系,MyService但是这使得它非常脆弱,你可以想象.

typescript angular

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

表达式树为类创建具有属性值的字典

基本上我正在尝试使用表达式树来做到这一点

var properties = new Dictionary<string, object>();

foreach (var propInfo in objType.GetTypeInfo().GetProperties(BindingFlags.Public))
{
    var name = propInfo.Name;
    var value = propInfo.GetValue(objInstance);

    properties.Add(name, value);
}

return properties;
Run Code Online (Sandbox Code Playgroud)

即创建一个名称和值对的字典,其中名称是属性的名称,objType值是实例objInstance的属性值objType

现在将其转换为表达式应该编译为一个简单的委托

Func<T, Dictionary<string, object>> func = i =>
{
    var properties = new Dictionary<string, object>();

    properties.Add("Prop1", (object)i.Prop1);
    properties.Add("Prop2", (object)i.Prop2);
    properties.Add("Prop3", (object)i.Prop3);
    // depending upon the number of properties of T, Add will continue

    return properties;
};
Run Code Online (Sandbox Code Playgroud)

我知道如何执行其中的一些操作,但我不确定如何创建字典的本地实例,然后在后续表达式中使用它(并返回它)?

c# reflection expression expression-trees

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

多个等待操作或仅一个

我已经看到了await关键字是如何实现的以及它创建的结果结构。我认为我对此有基本的了解。但是,是

public async Task DoWork()
{
    await this.Operation1Async();
    await this.Operation2Async();
    await this.Operation3Async();
}
Run Code Online (Sandbox Code Playgroud)

“更好”(通常来说)或

public async Task DoWork()
{
    await this.Operation1Async();
    this.Operation2();
    this.Operation3();
}
Run Code Online (Sandbox Code Playgroud)

第一种方法的问题在于,它正在Task为每个等待呼叫创建一个新的?哪个需要一个新线程?

鉴于第一个在第一个Task上创建了一个新项await,然后新项中处理了其中的所有内容Task

编辑 好吧,也许我不太清楚,但是例如,如果我们有

while (await reader.ReadAsync())
{
    //...
}

await reader.NextResultAsync();

// ...
Run Code Online (Sandbox Code Playgroud)

这不是在创建两个任务吗?ReadAsync在这个新创建的任务中,主线程中的第一个任务是第一个任务,然后是另一个任务NextResultAsync。我的问题是确实需要第二个任务,在主线程中创建的一个任务不够吗?所以

while (await reader.ReadAsync())
{
    //...
}

reader.NextResult();

// ...
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asynchronous async-await

4
推荐指数
1
解决办法
1256
查看次数

asp.net core http delete `FromBody` 如果没有内容类型头,则忽略

我在 httpDELETE请求中使用正文。我知道目前在删除中有一个正文是非标准的(但允许)。

使用HttpClient不允许删除请求的正文时会出现问题。我知道我可以只使用SendAsync,但我宁愿让我的 API 更灵活。

我希望这个机构是可选的。从某种意义上说,如果 asp.net core 无法确定内容类型,则忽略它。目前,asp.net 核心返回 415,即使没有发送正文(通过HttpClient- 所以内容长度应该为 0)。

可以FromBody这样扩展吗?或者我是否需要在管道中使用一些自定义逻辑?

c# http asp.net-core

3
推荐指数
1
解决办法
4751
查看次数