小编Jon*_*man的帖子

返回一个空洞的承诺

我有一个返回jQuery承诺的函数.它看起来像这样:

addBooks(books: Array<Books>) {
    return $.ajax({
        url: '/Books/AddBooks/',
        type: 'POST',
        data: ko.toJSON(books),
        contentType: 'application/json'
    });
}
Run Code Online (Sandbox Code Playgroud)

我这样做,所以我可以重用这个函数和链承诺回调,如:

addBooks.done(() => { alert("Books added!"); })
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我想尽早摆脱addBooks并阻止访问服务器该怎么办?例如:

addBooks(books: Array<Books>) {

    // An empty array was passed in for some reason.
    // Theres nothing to add so dont try to POST
    if (books <= 0) return null;

    return $.ajax({
        url: '/Books/AddBooks/',
        type: 'POST',
        data: ko.toJSON(books),
        contentType: 'application/json'
    });
}
Run Code Online (Sandbox Code Playgroud)

我的示例将无法编译,因为我的链式完成回调示例期望addBooks返回一个promise对象,而不是null.我怎样才能返回一个空的承诺(或者在这种情况下我应该返回的正确对象)?

javascript ajax jquery jquery-deferred typescript

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

替代百万IF语句

使用JavaScript我将网页中的名称拉出来并以某种方式将它们串在一起(可能与数组一起).一旦我将所有名称收集在一起,我需要创建另一个字符串,该字符串提供名称的所有电子邮件地址.电子邮件地址不在网页上,所以我必须在我的脚本中以某种方式列出每个可能的thisName = thisEmail.我打算通过制作一个无数的if语句来解决这个问题,但我认为必须采用更有效的方式.有什么建议?

var x = getElementById("names");
var name = x.InnerHTML;
var email;
if (name == 'Steve'){ email == 'steve462@gmail.com'; }
if (name == 'Bob'){ email == 'duckhunter89@gmail.com'; }
....
Run Code Online (Sandbox Code Playgroud)

javascript if-statement

8
推荐指数
1
解决办法
914
查看次数

在foreach条件下抛出异常

foreach在foreach本身的情况下,我有一个循环在循环中断开.有没有办法try catch抛出异常然后继续循环?

这将运行几次,直到异常命中然后结束.

try {
  foreach(b in bees) { //exception is in this line
     string += b;
  }
} catch {
   //error
}
Run Code Online (Sandbox Code Playgroud)

这根本不会运行,因为异常是在foreach的条件下

foreach(b in bees) { //exception is in this line
   try {
      string += b;
   } catch {
     //error
   }
}
Run Code Online (Sandbox Code Playgroud)

我知道你们中的一些人会问这是怎么回事,所以这就是:PrincipalOperationException抛出异常是因为PrincipalGroupPrincipal(蜜蜂)中找不到(我的例子中的b ).

编辑:我添加了以下代码.我还发现一个组成员指向一个不再存在的域.我通过删除该成员轻松解决了这个问题,但我的问题仍然存在.你如何处理在foreach条件下抛出的异常?

PrincipalContext ctx = new PrincipalContext(ContextType.domain);
GroupPrincipal gp1 = GroupPrincipal.FindByIdentity(ctx, "gp1");
GroupPrincipal gp2 = GroupPrincipal.FindByIdentity(ctx, "gp2");

var principals = gp1.Members.Union(gp2.Members);

foreach(Principal principal in principals) …
Run Code Online (Sandbox Code Playgroud)

c# foreach exception try-catch

8
推荐指数
1
解决办法
9460
查看次数

Visual Studio意外地在加载时添加功能

我在Visual Studio 2013中有一个SharePoint 2010解决方案.每次关闭并重新打开Visual Studio时,都会在解决方案中添加一个新功能,其中包含一个列表.该列表已从其应该处于的另一个功能中删除.它始终是相同的列表.一旦我打开解决方案,这会在我执行任何操作之前弹出"输出"窗口...

A new feature Feature2 has been added to the project Solution
C:\Code\Solution\Package\Package.package (0,0): Added Feature2 to Package

是什么造成的?

我尝试过以下方法:

  1. 重新创建解决方案并复制所有文件 - 无变化
  2. 检查包和项目清单. - 一切看起来都不错.
  3. 以不同的方式加载项目,包括卸载和重载命令.- 没变
  4. 重新创建它喜欢的列表以隔离它自己的功能 - 没有变化
  5. 重新创建列表应该包含的功能,但它继续移动到这个新功能 - 没有变化
  6. 添加了一个新列表并将其放在功能中的问题列表之后 - VS然后创建了3个新功能!它从我的功能中取出了3个列表,并在每个功能中添加了一个.我想我生气了.

sharepoint visual-studio sharepoint-2010 visual-studio-2013

7
推荐指数
2
解决办法
2241
查看次数

Visual Studio 2017预运行构建事件

我希望每次项目运行时都运行一个npm脚本.此命令将启动一个触发webpack热模块交换的手表.它看起来像这样:

npm run watch:dev:hmr

我知道我可以从帖子和预构建事件中做到这一点,但我不想在每次构建后运行一个手表.我只想在启动项目的新实例之前运行它,理想情况下,在实例停止时停止它.

可以这样做吗?

visual-studio node.js npm webpack visual-studio-2017

6
推荐指数
0
解决办法
819
查看次数

JQuery .slideDown()正在向上滑动

这有效,但我不知道为什么.在function capIn()我看来,线$botcap.slideDown("slow")应该滑下div.它将它滑起来.如果我尝试使用.slideUp()没有任何事情发生,好像它试图滑下来.任何人都可以向我解释这个吗?

$(".slide").hover(capIn, capOut);

function capIn(){
    //slide top caption down
    var $topcap = $(this).children(".topcap");
    $topcap.slideDown("slow");

    //slide bottom caption up
    //!! Why does slideDown slide caption up here?
    var $botcap = $(this).children(".botcap");
    $botcap.slideDown("slow")
}

function capOut(){
    //slide top back up
    var $topcap = $(this).children(".topcap");
    $topcap.slideUp("slow");

    //slide bottom back down
    var $botcap = $(this).children(".botcap");
    $botcap.slideUp("slow");
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery hover slidedown slideup

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

使用 $facebook-&gt;api 从页面中删除 Facebook 帖子

我无法从我的网络应用程序中删除 Facebook 帖子。现在我知道Facebook 文档和其他 SO 帖子说要这样做:

You can delete objects in the graph by issuing HTTP DELETE requests to 
the object URLs, i.e,

DELETE https://graph.facebook.com/ID?access_token=... HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

但由于我是个菜鸟,我不完全理解用 HTTP 请求删除的简短解释。由于在我尝试时它不起作用,我假设简单地重定向到上面示例中形成的 url 不会删除任何内容。这意味着我现在必须了解 Web 开发的一些新领域... HTTP 请求。

这些是如何在 php 中完成的?在PHP手册的心不是帮不到多少。


附加信息:

我尝试了许多不同的变体:

$facebook->api($post_url, 'DELETE', array('method'=> 'delete') );
Run Code Online (Sandbox Code Playgroud)

我传递的 URL 是'/post_id'. 将post_id在创建后正在捕获并存储到数据库中。此 ID 与$_GET['story_fbid']可在任何帖子永久链接上找到的ID 匹配。也许这不是正确的 ID?我正在使用以下内容检索 ID:

//post to wall
$postResult = $facebook->api($post_url, 'post', $msg_body );
//capture the id of the post
$this->fb_post_id …
Run Code Online (Sandbox Code Playgroud)

php facebook facebook-graph-api

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

编码 UI 测试中的 TestContext TestRunParameters

按照此处此处概述的过程,我能够设置 TestRunParameter 并在运行时在单元测试中访问它。然后我在编码的 UI 测试中重复了完全相同的过程,但无法访问属性。

我的 .runsettings 文件:

<RunSettings>
  <TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
  </TestRunParameters>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)

我的测试方法:

[TestMethod]
public void MyTest1()
{
    // This throws an error because Properties["webAppUrl"] is null
    string webAppUrl = TestContext.Properties["webAppUrl"].ToString();

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

编码 UI 测试是否需要额外配置才能访问这些运行时属性?

编辑:我注意到在单元测试的上下文中, TestContext 是Microsoft.VisualStudio.TestPlatform.MSTestFramework.TestContextImplementation. 在编码的 UI 测试中,TestContext 是Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext.

visual-studio coded-ui-tests azure-devops

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

JQuery将此传递给函数

我需要发送this到capIn()和capOut()函数,以便我可以定位正确.slide的子div.我如何传递this给一个函数.this将是徘徊.

$(".slide").hover(function(){capIn();capOut();});
Run Code Online (Sandbox Code Playgroud)

javascript jquery function this hover

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

点源文件中的PowerShell点源-导入类

我的项目的结构如下:

MyScript.ps1
classes\
    Car.ps1
    Tesla.ps1
Run Code Online (Sandbox Code Playgroud)

Car.ps1是Tesla.ps1的基类。我试图在Tesla.ps1中这样定义Tesla:

. "$PSScriptRoot\Car.ps1"

class Tesla : Car
{
}
Run Code Online (Sandbox Code Playgroud)

MyScript.ps1需要使用Tesla类,但不必知道它是从Car继承的。

. "$PSScriptRoot\classes\Tesla.ps1"

$tesla = [Tesla]::new()
Run Code Online (Sandbox Code Playgroud)

点采购classes\Tesla.ps1工作正常,但从Tesla文件中抛出此错误:

找不到类型[汽车]

如果我以正确的顺序将所有文件导入MyScript.ps1,则可以正常工作。例:

. "$PSScriptRoot\classes\Car.ps1"
. "$PSScriptRoot\classes\Tesla.ps1"

$tesla = [Tesla]::new()
Run Code Online (Sandbox Code Playgroud)

这很麻烦,尤其是随着复杂性的增长。我的网点采购不正确吗?有没有更好的方法可以使用PSModulePath中没有的相对路径导入自定义PowerShell类?

powershell class powershell-module

4
推荐指数
1
解决办法
501
查看次数