我需要创建一个JavaScript Promise,在特定条件为真之前无法解析.假设我有第三方库,我需要等到该库中存在某种数据条件.
我感兴趣的场景是除了简单的轮询之外无法知道何时满足这个条件的场景.
我可以创建一个等待它的承诺 - 这段代码可以工作,但有没有更好或更简洁的方法解决这个问题?
function ensureFooIsSet() {
return new Promise(function (resolve, reject) {
waitForFoo(resolve);
});
}
function waitForFoo(resolve) {
if (!lib.foo) {
setTimeout(waitForFoo.bind(this, resolve), 30);
} else {
resolve();
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
ensureFooIsSet().then(function(){
...
});
Run Code Online (Sandbox Code Playgroud)
我通常会实现最大轮询时间,但不希望这样在这里解决问题.
我有一个Visual Studio 2015 ASP.Net核心项目,其中包含一个打字稿文件的文件夹.
我的问题是如何阻止VS尝试编译TypeScript文件?我不希望它们在保存或构建时编译.
我尝试在下面添加了项目设置,但它似乎没有任何影响.
<PropertyGroup>
<TypeScriptCompileOnSaveEnabled>False</TypeScriptCompileOnSaveEnabled>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
目前VS正在抛出错误,tsc.exe exited with code 1但如上所述,我不希望TS编译器完全运行.
我可以禁用VS使用的typescript.targets,但这不实用,因为我需要它用于其他项目.
给定简单的JS继承,这两个例子之间的基函数的实际差异是什么?换句话说,什么时候应该选择在"this"上而不是在原型上(或者相反的方式)定义一个函数?
对我来说,第二个例子更容易消化,但还有多少呢?
在此定义的函数:
//base
var _base = function () {
this.baseFunction = function () {
console.log("Hello from base function");
}
};
//inherit from base
function _ctor() {
this.property1 = "my property value";
};
_ctor.prototype = new _base();
_ctor.prototype.constructor = _ctor;
//get an instance
var instance = new _ctor();
console.log(instance.baseFunction);
Run Code Online (Sandbox Code Playgroud)
原型上定义的函数:
//base
var _base = function () {};
_base.prototype.baseFunction = function () {
console.log("Hello from base function");
}
//inherit from base
function _ctor() {
this.property1 = "my property value";
};
_ctor.prototype …Run Code Online (Sandbox Code Playgroud) 我有一个简单的服务,包含一个List<Foo>.在Startup.cs中,我正在使用该services.addScoped<Foo, Foo>()方法.
我在两个不同的地方(控制器和中间件)注入服务实例,对于单个请求,我希望得到相同的实例.但是,这似乎并没有发生.
即使我在Controller Action中向List中添加Foo,中间件中的Foo列表也始终为空.为什么是这样?
我已经尝试将服务注册更改为单例,使用AddSingleton()它并按预期工作.但是,这必须限制在当前请求范围内.非常感谢任何帮助或想法!
FooService.cs
public class FooService
{
public List<Foo> Foos = new List<Foo>();
}
Run Code Online (Sandbox Code Playgroud)
Startup.cs
...
public void ConfigureServices(IServiceCollection services)
{
...
services.AddScoped<FooService, FooService>();
}
Run Code Online (Sandbox Code Playgroud)
[以下是我注入服务的两个地方,导致两个不同的实例]
MyController.cs
public class MyController : Controller
{
public MyController(FooService fooService)
{
this.fooService = fooService;
}
[HttpPost]
public void TestAddFoo()
{
//add foo to List
this.fooService.Foos.Add(new Foo());
}
}
Run Code Online (Sandbox Code Playgroud)
FooMiddleware.cs
public AppMessageMiddleware(RequestDelegate next, IServiceProvider serviceProvider)
{
this.next = next;
this.serviceProvider = serviceProvider;
}
public async …Run Code Online (Sandbox Code Playgroud) c# dependency-injection .net-core asp.net-core asp.net-core-2.0
我创建了一个通过VSIX扩展安装的项目模板.这工作正常,但它只显示在Visual C#类别中.我在查找如何在Visual C#> Web类别中显示它时遇到了很多麻烦.
我曾尝试下面的文档ProjectType和ProjectSubType,但是当我指定ProjectType=Web和ProjectSubType=CSharp,它不会显示在所有.
查看.vstemplate文件ProjectTemplatesCache夹中的文件,我看到了具有ProjectType=CSharp和的项目模板的示例ProjectSubType=Web,但对我来说,它只显示在根Visual C#类别中.不会出现在Visual C#> Web中.
有任何想法吗?
project-template visual-studio visual-studio-templates visual-studio-2012
我正在考虑将Breeze.js用于客户端SPA项目,但使用Dapper ORM而不是Entity Framework进行服务器端数据访问.
我知道Breeze.js的销售不依赖于EF,但它显然是针对它的.
有没有人尝试在服务器上使用Dapper ORM或其他框架来替换Breeze和EF?
是否有任何特别关注或"陷阱",我应该知道进入这个?
.Net 4 中定义了 IsNullOrWhiteSpace 的扩展方法吗?
我之前用过这个扩展方法,但是找不到,我开始怀疑我当时是否在使用自定义扩展而没有意识到它。
我正在使用Knockout.js和ASP.NET Web ApiController完成一个新项目。我看到的许多示例都会在将数据发布到服务器之前执行一些手动JSON序列化。此外,请求内容类型通常也设置为“ application / json”。
我想知道为什么这是必要的。我以为我还没有遇到过使它成为必需或至少可取的东西。
目前,使用这些jQuery ajax选项将所需的任何数据发送到服务器都没有问题:
cache: false,
traditional: true,
type: 'POST',
Run Code Online (Sandbox Code Playgroud)
这是示例JS对象和相应的POST并绑定到ApiController操作方法的服务器端C#模型对象。
//JS object
var requestDataObject = {
accountId: vm.accountId,
range: [1, "a'b\"c", 3],
start: new Date(2012, 12, 12)
};
//C# model object
public class RequestData
{
public int AccountId { get; set; }
public string[] Range { get; set; }
public DateTime Start { get; set; }
}
//Action method signature
[HttpPost]
public HttpResponseMessage GetAccountUsage(RequestData requestData){
...
Run Code Online (Sandbox Code Playgroud)
我想念什么?
javascript ×3
.net-core ×2
.net ×1
asp.net-core ×1
breeze ×1
c# ×1
dapper ×1
jquery ×1
promise ×1