Visual Studio 2010 Javascript Intellisense 无法正常工作

Posted

技术标签:

【中文标题】Visual Studio 2010 Javascript Intellisense 无法正常工作【英文标题】:Visual Studio 2010 Javascript Intellisense not working properly 【发布时间】:2011-05-28 08:20:33 【问题描述】:

Visual Studio 2010 和 javascript Intellisense 有一点问题。

我已经实现了一个带有一些“属性”的类,并希望实现一个“静态”函数,该函数在返回 Json-Object 的 ajax 请求之后返回该类的新实例。

像这样:

/// <reference path="jQuery/jquery-1.4.1-vsdoc.js" />
MyClass = function (options) 
    /// <summary>MyClass Description</summary>
    /// <param name="options" type="Array">Foo1 (string), Foo2(string)</param>
    /// <field name="Foo1" type="String">Foo1 Description</field>
    /// <field name="Foo2" type="String">Foo2 Description</field>

    // [...] Some Code

    // Properties
    this.Foo1 = options.Foo1;
    this.Foo2 = options.Foo2;

以及功能:

智能感知不工作:

MyClass.MyFunction = function ()  
    /// <summary>MyFunction Description</summary>
    /// <returns type="MyClass">MyClass</returns>

    $.ajax(
        type: 'GET',
        url: '/Foo/Bar',
        dataType: 'json',
        success: function (result) 
            return new MyClass(result);
        
    );

智能工作:

MyClass.MyFunction = function ()  
    /// <summary>MyFunction Description</summary>
    /// <returns type="MyClass">MyClass</returns>

    var foo = new MyClass('foo1': 'a', 'foo2': 'b');
    $.ajax(
        type: 'GET',
        url: '/Foo/Bar',
        dataType: 'json',
        success: function (result) 
            foo = new MyClass(result);
            return foo;
        
    );

    return foo;

当我从另一个函数调用该函数时,例如:

$(document).ready(function() 
    var foobar = MyClass.MyFunction(); // returns Object of type "MyClass"
    alert(foobar.Foo1); // At this Point, the intellisense doesn't work correct
);

我的智能感知不再工作(或与双重返回一起工作),因为 MyFunction 的返回在 ajax 请求中。如果我将 return 放在函数的末尾,智能感知就会再次工作。但在这种情况下,我有两个回报。第一个来自函数,第二个来自 ajax-success。

似乎&lt;returns...&gt;&lt;/returns&gt; 仅在返回位于函数末尾时才有效。这很糟糕,因为我只需要在 ajax 请求完成后返回一个。

我不知道如何处理这个问题。希望你能帮我解决这个问题:)

【问题讨论】:

【参考方案1】:

“成功”回调内部的return 无论如何都不起作用。它会从 that 函数返回,但不会关注返回值,特别是“成功”函数的返回值将 not 是从“MyFunction”返回值。

如果您想要“MyFunction”获取一个值并允许一些代码对其进行处理,那么该代码必须传递给“MyFunction”并在“success”函数中调用。因此,而不是:

var thing = MyClass.MyFunction();
/*
  do stuff with "thing"
*/

你会改变“MyFunction”以便你可以这样做:

MyClass.MyFunction(function(thing) 
  /*
    do stuff with "thing"
  */
);

函数看起来像这样:

MyClass.MyFunction = function (doStuff)  
  /// <summary>MyFunction Description</summary>

  $.ajax(
    type: 'GET',
    url: '/Foo/Bar',
    dataType: 'json',
    success: function (result) 
        doStuff(new MyClass(result));
    
  );

【讨论】:

感谢您的快速回复。但是 MyFunction 的返回值的智能感知也不起作用。我发布的代码有效,但我需要智能感知。 问题是,如果你的函数真的像这样调用$.ajax(),那么“成功”函数中的return将不起作用。您的“MyFunction”无法返回该 ajax 调用的结果,因为它是异步的。 嗯,坏消息,但你是对的。我发现的唯一方法是使函数同步。我会考虑的,谢谢。

以上是关于Visual Studio 2010 Javascript Intellisense 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017 中的 Visual Studio 2010

Visual Studio 2015 属性页无法打开 Visual Studio 2010 属性

从 Visual Studio 2008 升级到 Visual Studio 2010 速成版

Visual Studio 2010 项目到 Visual Studio 2012

Visual Studio 2012 与 Visual Studio 2010 (delta) [关闭]

visual studio 2010 工程太大