小编Sea*_*ean的帖子

Javascript返回冒号

我正在学习JavaScript,并且遇到了以下结构:

var Test = (function () {

  function func1() {
      //do something.....
  }

  function func2() {
      //do something.....
  }

  function func3() {
      //do something.....
  }

  return {
      func1: func1,
      func2: func2,
      func3: func3
  };

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

我想知道返回块正在做什么.这是一个非常常用的JavaScript结构吗?请告诉我在哪里可以获得更多相关信息.

javascript return revealing-module-pattern

54
推荐指数
2
解决办法
3810
查看次数

lodash地图和选择

给出一个数组

var test = [{a:1, b:2, c:3}, {a:4, b:5, c:6}, {a:7, b:8, c:9}]
Run Code Online (Sandbox Code Playgroud)

如何获得像[{b:2, c:3}, {b:5, c:6}, {b:8, c:9}]lodash 一样的新对象数组?

我试过了_.map(test, _pick(???, ['b', 'c'])} 我应该放???什么?

javascript underscore.js lodash

6
推荐指数
2
解决办法
6071
查看次数

无法在异步等待中复制死锁

我希望在下面的代码上发生死锁:

static async Task<int> DelayAndReturnAsync(int val)
{
    await Task.Delay(TimeSpan.FromSeconds(val));
    return val;
}

static async Task<int> ProcessTaskAsync()
{
    var taskA = await DelayAndReturnAsync(3);
    int num = taskA++;
    return num;
}

static void Main(string[] arg)
{
    var testTask = ProcessTaskAsync();
    testTask.Wait();
    Console.WriteLine("Done");
}
Run Code Online (Sandbox Code Playgroud)

由于主线程(当前上下文)在调用ProcessTaskAsync()和被阻塞之后处于等待状态teskTask.Wait(),因此它无法返回到该方法并在DelayAndReturnAsync()完成时继续其余代码.主线程将等待它等待ProcessTaskAsync完成ProcessTaskAsync(原始上下文)继续其余的代码.因此陷入僵局.

如果我的理解有任何问题,请告诉我.我原本试图复制死锁并测试使用ConfigureAwait(false)方法的解决方案ProcessTaskAsync.例如ProcessTaslAsync.ConfigureAwait(false).

.net c# deadlock task-parallel-library async-await

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

以异步方式在并发字典中调用valuefactory

我是C#ConcurrentDictionary类的新手,我想知道如何GetOrAdd以异步方式在方法中使用valueFactory .

public class Class1
{
    public int X = 10;

    public Class1(int x)
    {
        X = x;
        Debug.WriteLine("Class1 Created");
    }
}
Run Code Online (Sandbox Code Playgroud)

在WinForm按钮中测试代码逻辑:

private async void button1_Click(object sender, EventArgs e)
{
    var asyncDict = new ConcurrentDictionary<int, Task<Class1>>();

    Func<int, Task<Class1>> valueFactoryAsync = async (k) => new Class1(await Task.Run(async () =>
    {
        await Task.Delay(2000);
        Debug.WriteLine("Async Factory Called");
        return 5;
    }));

    var temp = await(asyncDict.GetOrAdd(1, valueFactoryAsync)).ConfigureAwait(false);
    Debug.WriteLine(temp.X);
    temp.X = 20;
    var temp2 = await (asyncDict.GetOrAdd(1, valueFactoryAsync)).ConfigureAwait(false);
    Debug.WriteLine(temp2.X);
}
Run Code Online (Sandbox Code Playgroud)

当第二次调用GetOrAdd方法时,它从并发字典返回一个Task.然后我在任务上调用await, …

c# asynchronous concurrentdictionary

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

javascript变量初始化显示NaN

function sumArray(numbers){
  var sum;
  for(var i in numbers){
      sum += numbers[i];
  }
  return sum;
}

console.log(sumArray([1,2,3,4,5]));
Run Code Online (Sandbox Code Playgroud)

大家好,

结果是NaN。但是,如果我用sum = 0初始化 sum ,结果是 15。为什么 JS 无法识别数组中的值类型并为我进行初始化?为什么在第一种情况下它返回NaN ?

谢谢

javascript var initialization

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

具有对象表示法的javascript函数参数

之间有什么区别

function updateSomething(item) {}
Run Code Online (Sandbox Code Playgroud)

function updateSomething({items}) {}
Run Code Online (Sandbox Code Playgroud)

?第一个中的item变量也可以是对象,为什么第二个中使用对象符号?我什么时候应该使用前一个和后一个?

javascript parameters function

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

为什么执行lambda表达式中的方法

我有一个简单的测试程序,并想知道为什么控制台输出是1而不是6?谢谢.

static void Main(string[] args)
    {
        var t = new List<int>() {1, 1, 1, 1, 1};
        var s = new List<int>() {1};

        var g = t.Select(a => test(a, s));
            Console.WriteLine(s[0]);    
    }

    private static int test(int a, List<int> s )
    {
        s[0]++;
        return a;
    }
Run Code Online (Sandbox Code Playgroud)

c# ienumerable lambda

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

PLINQ例外

我正在使用PLINQ,代码如下:

static void Main(string[] args)
    {
        var lt = new List<int>() {1,2,3,4,5};
        try
        {
            var nlt = lt.AsParallel().Select(Test).ToList();
        }
        catch (AggregateException e)
        {
            foreach (var ex in e.InnerExceptions)
            {
                Console.WriteLine(ex.Message);
            }
        }

    }

    private static bool Test(int n)
    {
        if (n == 1)
        {
            Thread.Sleep(1000);
        }
        if (n == 3)
        {
            Thread.Sleep(3000);
        }
        if (n == 5)
        {
            Thread.Sleep(5000);
        }
        if (n == 2 || n == 4)
        {
            throw new Exception("New exception");
        }
        Console.WriteLine("element : {0}", n);
        return true; …
Run Code Online (Sandbox Code Playgroud)

.net c# plinq aggregateexception

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

更新私人成员的公共void方法的单元测试

我有以下公共无效方法:

public void Reset()
{
   // Get updates
   // update logic for each value in _dict
}
Run Code Online (Sandbox Code Playgroud)

而_dict是该类的私有成员:

private readonly dictionary<string, string> _dict;   
Run Code Online (Sandbox Code Playgroud)

如何在Reset()方法的更新逻辑上执行单元测试?如何在重置后验证_dict中的值是否正确?我不想为_dict设置公共getter来公开它.

我正在使用xunit和C#.

c# unit-testing xunit

0
推荐指数
1
解决办法
136
查看次数