小编Fla*_*nix的帖子

如何使用Array.prototype.filter与异步?

背景

我试图过滤一个对象数组.在我过滤之前,我需要将它们转换为某种格式,并且此操作是异步的.

 const convert = () => new Promise( resolve => {
     setTimeout( resolve, 1000 );
 });
Run Code Online (Sandbox Code Playgroud)

所以,我的第一次尝试是使用async/await执行以下操作:

const objs = [ { id: 1, data: "hello" }, { id: 2, data: "world"} ];

objs.filter( async ( obj ) => {
    await convert();
    return obj.data === "hello";
});
Run Code Online (Sandbox Code Playgroud)

现在,正如你们中的一些人所知,Array.protoype.filter回调必须返回true或false的函数.filter是同步的.在前面的例子中,我没有返回它们,我返回一个Promise(所有异步函数都是Promises).

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

因此,正如人们可以假设的那样,之前的代码并没有真正起作用......这种假设是正确的.

问题

为了使过滤器使用异步函数,我检查了stackoverflow并找到了这个主题:

使用返回promise的函数过滤数组

不幸的是,选择的答案过于复杂并且使用了类.这不适合我.我正在寻找一个更简单的解决方案,使用功能方法的简单功能.

最后有一个解决方案,使用带回调的地图来模拟过滤器:

/sf/answers/3278952701/

但我希望修复我的过滤功能,而不是替换它.

问题

  • 有没有办法在过滤器内部使用异步功能?
  • 如果没有,我能做的最简单的替换是什么?

javascript arrays filter async-await

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

Nuget版本不正确?

我有一个无法编译的项目.当我尝试这样做时,我收到以下错误:

The 'Microsoft.Bcl.Build 1.0.14' package requires NuGet client version '2.8.1' or above, but the current NuGet version is '2.7.41115.310'.  
Run Code Online (Sandbox Code Playgroud)

通常情况下这很简单.搜索后我找到了这个指南:http: //www.daimto.com/package-requires-nuget-client-version-x/

这解释了我如何升级我的Nuget客户端版本.但是,当我按照这些步骤进行操作时,我发现我已经在使用最新版本的Nuget:2.8.5

但是出于某种原因,Visual Studio 2013 Ultimate使用的是旧版本,我不明白为什么.

在卸载Visual Studio for Web Express 2012之后,我安装的Visual Studio Ultimate 2013是一个全新安装.之前的版本给了我相当多的问题,因此我将其删除并转移到2013.我想知道是否有一些cofig文件是通过,但我不能确定.

我该如何解决这个问题?

c# visual-studio nuget

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

解锁另一个线程java所拥有的锁

我有一个LockManager来管理几个线程的锁.有时线程是坏男孩,我必须杀死它们并要求LockManager释放所有锁.但是,由于我在java中使用ReentrantLock这是不可能的,我无法解锁另一个线程所拥有的锁.

我被迫使用Locks(不能使用信号量,这是功课的重点).是否有任何Java Lock实现允许我解锁其他线程拥有的锁?

到目前为止,我考虑的选项是:

  • 以允许我这样做的方式重新实现ReentrantLock
  • 在信号量和ReentrantLocks之间进行某种映射

您可能会觉得有用的额外资源:

java locks reentrantlock

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

发布/订阅可靠消息:Redis VS RabbitMQ

背景

我正在制作一个发布/订阅典型应用程序,其中发布者向消费者发送消息.

发布者和消费者在不同的机器上,它们之间的连接偶尔会中断.

目的

这里的目标是确保无论连接发生什么,或者机器本身,发布者发送的消息总是消费者接收.

消息的排序不是必须的.

问题

根据我的研究,RabbitMQ是这种情况的正确选择:

然而,尽管拥有的RabbitMQ教程关于发布和订阅本教程不存在我们持久性的队列也未提及确认,我相信是关键,确保邮件传递.

另一方面,Redis也能够做到这一点:

但是我找不到任何正式的教程或示例,我目前的轻描淡写使我相信持久性队列和消息确认必须由我们完成,因为Redis主要是在内存数据存储区而不是像RabbitMQ这样的消息代理.

问题

  1. 对于这个用例,哪种解决方案最容易实现?(Redis解决方案还是RabbitMQ解决方案?)
  2. 请提供您认为最好的示例链接!

javascript publish-subscribe rabbitmq redis node.js

18
推荐指数
1
解决办法
8461
查看次数

Math.floor VS Math.trunc JavaScript

背景

我正在创建一个接收正数的函数,然后将数字四舍五入到它下面最接近的整数.

我一直在使用Math.floor,但最近我发现了Math.trunc.

我知道两者都将返回相同的值,给定一个正数,并且它们以完全不同的方式工作.我有兴趣探索这种行为.

问题

  1. 哪一个更快?
  2. 我应该使用哪一个?

javascript math performance

17
推荐指数
3
解决办法
8588
查看次数

EntityFramework错误:提供程序未返回ProviderManifest实例

我的项目是使用ASP.NET MVC4,在C#中使用Visual Studio 2012 for Web Express.

编译我的项目时,我有以下错误:

提供程序未返回ProviderManifest实例.无法确定存储版本; 需要有效的存储连接或版本提示.

经过几个小时的搜索后,我认为错误与实体框架有某种关系.我还在这里找到了解决此错误的方法:http: //forums.devart.com/viewtopic.php?f = 32&t = 25748

解决方法建议我改场ProviderManifestToken="2012"ProviderManifestToken="2008"我的.edmx文件.

这样做之后,错误消失了.但是当我运行项目时出现另一个问题,即运行时错误:

无法加载文件或程序集"Microsoft.Data.Edm"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

===预绑定状态信息===
LOG:DisplayName = Microsoft.Data.Edm
(Partial)
WRN:为程序集提供了部分绑定信息:
WRN:程序集名称:Microsoft.Data.Edm | 域ID:2
WRN:仅提供部分程序集显示名称时发生部分绑定.
警告:这可能导致装订器装入错误的装配.
警告:建议为程序集提供完全指定的文本标识,即
WRN:由简单名称,版本,区域性和公钥标记组成.
警告:有关此问题的更多信息和常见解决方案,请参阅白皮书http://go.microsoft.com/fwlink/?LinkId=109270.
日志:Appbase = file:/// C:/ Users/Pedro/Documents/Visual Studio 2012/Projects/Dockis/Development/Dockis/Dockis/
LOG:Initial PrivatePath = C:\ Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\bin
调用程序集:(未知).

日志:此绑定在默认加载上下文中启动.
日志:使用应用程序配置文件:C:\ Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\web.config
日志:使用主机配置文件:C:\ Users\Pedro\Documents\IISExpress\config\aspnet.config
日志:使用C:\ Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config中的计算机配置文件.

日志:此时策略未应用于引用(私有,自定义,部分或基于位置的程序集绑定).
日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm.DLL.
日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb /Microsoft.Data.Edm/Microsoft.Data.Edm .DLL.
日志:尝试下载新的URL文件:/// C:/ …

c# entity-framework asp.net-mvc-4 visual-studio-2012

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

使用PagedList进行分页,效率如何?

我一直试图实现分页已经有一段时间了,我发现这个教程用于使用MVC进行分页:ASP.NET MVC分页完美地完成了

现在,在这个解决方案中,我在数据库中查询整个客户端集,然后返回一个客户端的分页列表而不是普通列表.

我觉得这很令人不安,因为我只打算每页显示10或20个条目,而我的数据库很容易就会有超过一百个.因此,每次我想显示Index页面时查询整个数据库似乎都是一个糟糕的解决方案.

如果我理解错误的东西,请立即剪掉我,但对我而言,这个解决方案绝不是完美的.

我误解了什么吗?是否有一个更有效的解决方案或库用于MVC的分页?

c# asp.net-mvc paging

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

找不到类型或命名空间名称'BundleCollection'(您是否缺少using指令或程序集引用?)

所以,我在C#中有一个MVC 4项目,我正在使用Visual Studio For Web 2012 Express.

由于错误,我无法编译projecto:无法找到类型或命名空间名称'BundleCollection'(您是否缺少using指令或程序集引用?)

通常,这意味着缺少库.因此,在互联网上快速搜索后,我使用NuGet进行安装Microsoft.AspNet.Web.Optimization,但仍然无法正常工作.

让我感到有趣的是,应该通过deafult为应用程序知道BundleCollections.我只能想象我添加了一个让一切搞砸的依赖,但我真的不能确定.

我该如何解决这个问题?我在这里错过了什么?

码:

using System;
using System.Web;
using System.Web.Optimization;

namespace Dockis
{

    public class BundleConfig
    {
        // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            IItemTransform cssFixer = new CssRewriteUrlTransform();

            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

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

编辑

检查我的参考文件夹后,我尝试运行该命令Install-Package System.Web.Optimization,但是我无法安装此软件包.我收到以下错误:

Install-Package : One or more errors occurred.
At line:1 char:16
+ Install-Package <<<<  System.Web.Optimization
    + CategoryInfo          : NotSpecified: (:) [Install-Package], AggregateException
    + …
Run Code Online (Sandbox Code Playgroud)

.net c# nuget asp.net-mvc-4 visual-studio-2012

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

如何在JavaScript ECMA6中重载构造函数?

目的

实现一种机制,允许JavaScript ECMA6中的构造函数重载

为什么这不重复

主题为什么JavaScript ES6不支持多构造函数类?虽然类似的不一样.另一个主题仅关注使用 ECMAScript版本的构造函数重载,而本主题则侧重于ECMA6.如果您正在寻找更新的答案,那就是这个地方.

背景

我有一个带有给定构造函数的JavaScript类,我希望用户在实例化对象时能够拥有不同的构造函数.我假装的一个例子如下:

const DEFAULT_WHEEL_NUMBER = 4;
const DEFAULT_COLOR = "black";    
const DEFAULT_NAME = "myCar";

class Car{

    constructor(numberWheels, aName, aColor){
        this.wheelsNum = numberWheels;
        this.name = aName;
        this.color = aColor;
    }

    constructor(aName){
        this(DEFUALT_WHEEL_NUMBER, aName, DEFAULT_COLOR);
    }

    constructor(){
        this(DEFUALT_WHEEL_NUMBER, DEFAULT_NAME, DEFAULT_COLOR);
    }
}
Run Code Online (Sandbox Code Playgroud)

在此代码中,用户有三个可以使用的构造函数,每个构造函数都使用不同数量的参数.一个用法示例如下:

var car1 = new Car(3, "tricicle-car", "white");
var car2 = new Car("Opel"); //creates black car with 4 wheels called Opel
var car3 = new Car(); //creates a black car, …
Run Code Online (Sandbox Code Playgroud)

javascript constructor overloading constructor-overloading ecmascript-6

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

MVC中的Summernote和表单提交c#

我正在使用文本框的summernote插件:http://summernote.org/#/getting-started#basic-api

这是我使用summmernote的形式:

<div class="modal-body" style="max-height: 600px">
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)
        <fieldset class="form-horizontal">
            <div id="textForLabelLanguage"></div>
            <button type="submit" class="btn btn-primary">Save changes</button>
            @Html.ActionLink("Cancel", "Index", null, new { @class = "btn " })
        </fieldset>
    }
</div>

<script type="text/javascript">
    $(document).ready(function () {
        $('#textForLabelLanguage').summernote();
    });
</script>
Run Code Online (Sandbox Code Playgroud)

现在,在我的控制器中,这是我的代码:

public ActionResult Create(UserInfo newInfo , [Bind(Prefix = "textForLabelLanguage")] string textForLabelLanguage)
{
    //logic here
}
Run Code Online (Sandbox Code Playgroud)

现在问题是textForLabelLanguageparam总是为null.

发生这种情况是因为我在提交$('#textForLabelLanguage').code();表单时必须传入MVC,但我不知道该怎么做!

我该如何解决我的问题?

c# forms asp.net-mvc summernote

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