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。
似乎<returns...></returns>
仅在返回位于函数末尾时才有效。这很糟糕,因为我只需要在 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