Javascript 如何将异步回调结果作为调用方法的返回值

Javascript 如何将异步回调结果作为调用方法的返回值,javascript,cordova,asynchronous,Javascript,Cordova,Asynchronous,我正在开发phonegap插件。我想在另一个简单的javascript方法(比如JSmethod())中调用一个插件方法(比如a(callback1,callbackerror)),一旦我从插件方法(a()的callback1)得到结果,我想从调用方法(从JSmethod()返回值)返回结果 我遵循一些jQuery文档,使用$.Deferred()实现了这一点,但无法按预期返回值。 示例代码: function JSmethod(){ //jQuery API var deferred

我正在开发phonegap插件。我想在另一个简单的javascript方法(比如JSmethod())中调用一个插件方法(比如a(callback1,callbackerror)),一旦我从插件方法(a()的callback1)得到结果,我想从调用方法(从JSmethod()返回值)返回结果

我遵循一些jQuery文档,使用$.Deferred()实现了这一点,但无法按预期返回值。 示例代码:

function JSmethod(){

  //jQuery API
  var deferred = $.Deferred();

  //calling phonegap plugin javascript method with success and fail callbacks.
  plugin.getProperties(function(result){

     deferred.resolve(result);//return result from plugin method.

  },function(){},params);



return deferred.promise();//result need to returned here
}

谁能帮我一下吗


提前感谢。

如果不同步,您就不能。这就是异步编程的本质。感谢Yoshi的回复。我可以知道如何同步这些方法吗?我对phonegap缺乏足够的经验,所以我不能说这是否可能。但总的来说,我建议不要尝试。实际上总有比同步更好的方法。也许你们可以详细说明为什么你们需要返回值在那个确切的位置?从我自己的javascript方法我想调用插件方法。plugin方法将把值返回给它的success或fail回调方法。但是我需要从javascript调用方法返回plugin方法结果。JSmethod()应该返回结果。同样,无法返回。考虑将回调函数传递给<代码> JSmethod <代码>,或者正确使用返回的承诺。