我正在尝试为博客平台创建一个构造函数,它内部有许多异步操作.这些包括从目录中获取帖子,解析它们,通过模板引擎发送它们等等.
所以我的问题是,让我的构造函数返回一个promise而不是它们调用的函数的对象是不明智的new.
例如:
var engine = new Engine({path: '/path/to/posts'}).then(function (eng) {
// allow user to interact with the newly created engine object inside 'then'
engine.showPostsOnOnePage();
});
Run Code Online (Sandbox Code Playgroud)
现在,用户可能还没有提供补充Promise链链接:
var engine = new Engine({path: '/path/to/posts'});
// ERROR
// engine will not be available as an Engine object here
Run Code Online (Sandbox Code Playgroud)
这可能会造成问题,因为用户可能会感到困惑,为什么 engine 在施工后无法使用.
在构造函数中使用Promise的原因是有道理的.我希望整个博客在构建阶段后正常运行.然而,在呼叫之后,它似乎几乎无法立即访问该对象new.
我一直在争论使用的东西,engine.start().then()或者engine.init()会返回Promise.但那些看起来也很臭.
编辑:这是在Node.js项目中.
在理解一门新语言时我非常挑剔,最近我开始学习C#.所以我想知道创建新应用程序时发生的一切 - 在这种情况下是一个新的Windows窗体应用程序.我创建了一个,并从Visual Studio获得了一些生成的代码,其中一行是Application.EnableVisualStyles().
我在MSDN上做了一些研究,发现了这篇文章:Application.EnableVisualStyles().我执行了一个示例,当我评论出所述行时,他们表示期望按钮不可见.没啥事儿!似乎没有任何改变.我知道这是一个非常基本的例子但不应该改变一些事情吗?如果在Main()过程中这是至关重要的,那么我究竟在做什么呢?
可能重复:
foreach循环如何在C#中工作?
我一直在网上搜索,我很难找到任何关于foreachC#循环幕后真实情况的答案.
我知道这个问题并不真正与实际编码有关,但它困扰着我.我对OO编程很熟悉,特别是接口.我知道他们是合同,我知道如何IEnumerable和IEnumerator工作-我还是这么认为.
我一直在MSDN上阅读这篇文章: IEnumerable Interface
我理解一切都是如何建立的.我有点不清楚,虽然在Main循环中如何foreach知道通过所有的值来迭代_people.怎么知道这个?它如何Current通过调用来跟踪return new PeopleEnum(_people);?
编辑:我不知道这是一个完全重复.是的,它的类似理由和同样的问题被问到,但我们正在寻找不同的答案或我想要的答案在前一个问题中没有讨论过.
像foreach(在obj中的int i){...}等等的foreach循环等同于
......"有点"不是我正在寻找的答案.
我有一个PDF文件,我已将其作为资源导入到我的项目中.该文件是一个帮助文档,因此我希望能够将其包含在每个部署中.我希望能够通过单击按钮打开此文件.
我已将构建操作设置为"Embedd Resource".所以现在我希望能够打开它.但是,当我尝试访问资源时My.Resources.HelpFile- 它是一个字节数组.如果我知道最终用户有一个适合打开PDF文档的程序,我该如何打开这个?
如果我错过了上一个问题,请指出正确的方向.我发现了几个关于在应用程序中打开PDF的问题,但我不在乎Adobe Reader是否单独打开.
我在这里检查了以前的问题,但我想我希望我的功能有点不同.据我所知,.tifInternet Explorer本身不支持文件,并且可以使用AlternaTIFF等扩展来解决此问题.但是,我希望对话框显示用户可以在客户端保存/打开文件的位置.我知道MS Windows图片和传真查看器可以打开它们,没问题.
这些文件位于我们的服务器上,这将是一个Intranet站点.目前,我有一个链接到视图中填充的文件,但我再次希望用户保存/打开文件的选项.
我正在使用MVC,我有点不熟悉,似乎无法想出这一点.谢谢.
这可能听起来很愚蠢,但我被卡住了,我没有运气在互联网上搜索会导致这种情况发生的原因.我有一个方法,我想检查,以确保输入的两个整数都是正数:
Public Function BothPositive(ByVal num1 As Integer, ByVal num2 As Integer) As Boolean
If (num1 And num2) > 0 Then
Return True
Else
Return False
End If
End Function
Run Code Online (Sandbox Code Playgroud)
现在,如果我输入一些数字
- BothPositive(1,1)= True
- BothPositive(1,2)= False
- BothPositive(-10,10)= True
为什么是这样?比较语句中的操作顺序是什么,或者"和"试图比较的是什么?我不明白为什么这不起作用.
编辑:我理解如何解决,但我的问题是为什么会发生这种情况?我想知道是什么导致了这种情况.
可能重复:为什么我的虚方法没有被覆盖?
我一直在经历Head First Design Patterns.在旁注中,我开始将本书作为Code Complete 2的先决条件.无论如何,我正在使用Decorator模式(该章甚至可以在线阅读).
所以,我有4个班:
这是类1,3,4的源代码.
饮料类:
public abstract class Beverage
{
public Beverage()
{
Description = "Unknown Beverage";
}
public String getDescription()
{
return Description;
}
public abstract double cost();
public String Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
BeverageDecorator类:
public abstract class BeverageDecorator : Beverage
{
public new abstract String getDescription();
}
Run Code Online (Sandbox Code Playgroud)
摩卡类:
public class Mocha : BeverageDecorator
{ …Run Code Online (Sandbox Code Playgroud) 我创建了几个使用我自己的DLL的小应用程序.问题是,这个DLL不断变化.我目前解决这个问题的方法是,我在类库解决方案中有一个Setup项目,用于创建和注册DLL.在我的所有应用程序中,我必须打开解决方案并重新引用新创建/注册的DLL.然后我必须重新编译他们的安装项目,卸载旧的应用程序,然后重新安装新的应用程序.
必须有一个更好的方法,我只是不确定,因为我对这一切都很新.我已经查看了ClickOnce,但我认为这不会解决我的问题,因为我无法发布类库.我已经研究过检查版本号但我必须做错了,因为它也不起作用.
我知道,一旦创建了一个DLL并在应用程序中使用它,就不应该触及它.在这种情况下我没有这个选择.它不断更新.完成.
那么,有更好的方法吗?我们将非常感谢指南或相关问题/答案/论坛的方向.
编辑:DLL在运行时不会不断变化,但它不断发展以允许其他应用程序中的更多功能和细节.另外,我想我应该提到的一件大事是Public接口不断变通 - 通常会添加新方法.
这可能是一个非常模糊的问题,但我想我真的不明白发生了什么.我之前问了一个问题,我被告知一种"将数据绑定到对象"的简单方法就是运行SqlConnection(connectionString).该回复还包括一条评论说我可以看中L2S和实体框架,所以我更深入地研究了这些.看来,与DataContext对象有关的所有内容都指向数据库.为什么SqlConnection会带来好处?
使用其中任何一个有什么区别(或优点/缺点)?还有一个"标准"吗?一个更现代吗?
PS我问了很多不需要回答的问题.我只想为我的问题添加一些清晰度,以及我对这个主题的理解程度.
我对OO编程的概念还是比较陌生的 - 实际上是编程,因为我还是学生.我目前在一个部门的实习生工作,让我编写一个新的结构,可能是他们所有应用程序的基础.所以我相信我有OO背后的想法,你创建"基本构建块",然后扩展,扩展和扩展,直到你到达最复杂的对象(暂时).
我需要将所有这些"高级"对象合并为一个,但有多少是太多了?如果它需要所有这些"部件",我可以在这个更大的对象内部有100个对象.
我真的希望这个问题对每个人都有意义.我确定答案不会是一个明确的答案,但我只需要一个经验法则就可以了.如果有更好的设计/编程技术,我真的很讨厌在一个大的内部有100个对象.
谢谢.
编辑1:非常感谢您的回复,但我仍然有点不清楚.我已经标记了一个答案,因为我觉得我可以继续我拥有的东西,但......
让我继续我的人类实例.人类由许多部分(或物体)组成,每个部分也由部分组成,一直到单个细胞.
人类 - >手臂 - >手 - >手指 - >拇指 - >骨骼 - >骨细胞
人类:ojbLeft_Arm,objRight_Arm,objLeftLeg,objRightLeg,objBrain,objHeart,objLeft_Eye,objRight_Eye ....得到我的观点?人体物体内有多少物体太多了?显然,由于人类非常复杂,因此人类对象将被认为是巨大的.你是否将Arm和Leg物体分解成objLimbs然后存储它们?
我想另一个问题是:如果你不想要很多物品,你如何避免它们?
c# ×5
vb.net ×4
.net ×3
ado.net ×1
architecture ×1
asp.net-mvc ×1
clr ×1
comparison ×1
constructor ×1
decorator ×1
deployment ×1
dll ×1
foreach ×1
if-statement ×1
integer ×1
javascript ×1
linq-to-sql ×1
node.js ×1
object ×1
oop ×1
pdf ×1
promise ×1
tiff ×1