我正在学习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结构吗?请告诉我在哪里可以获得更多相关信息.
给出一个数组
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'])}
我应该放???什么?
我希望在下面的代码上发生死锁:
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).
我是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, …
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 ?
谢谢
之间有什么区别
function updateSomething(item) {}
Run Code Online (Sandbox Code Playgroud)
和
function updateSomething({items}) {}
Run Code Online (Sandbox Code Playgroud)
?第一个中的item变量也可以是对象,为什么第二个中使用对象符号?我什么时候应该使用前一个和后一个?
我有一个简单的测试程序,并想知道为什么控制台输出是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) 我正在使用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) 我有以下公共无效方法:
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# ×5
javascript ×4
.net ×2
async-await ×1
asynchronous ×1
deadlock ×1
function ×1
ienumerable ×1
lambda ×1
lodash ×1
parameters ×1
plinq ×1
return ×1
unit-testing ×1
var ×1
xunit ×1