作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
<分区>
已编辑为要复制的评论我引用自:[ How do I return the response from an asynchronous call?
Promises are containers for future values. When the promise receives the value (it is resolved) or when it is cancelled (rejected), it notifies all of its "listeners" who want to access this value.
这个问题是关于如何返回promise中包含的值。这个答案对我很有用,因为它阐明了不可能返回值,而是访问 promise 函数中的值。
关于这个主题的其他有用资源,在这里:
在原始问题下方:
您能否帮助理解如何从 promise 中获取值(value)以及这两个示例之间的区别?
//I have a simple ajax call like:
var fetch = function(start_node, end_node) {
var apiEndpoint = 'localhost/nodes/';
var loadurl = apiEndpoint+start_node+'/'+end_node;
return $.ajax({
url: loadurl,
type: 'GET',
dataType: 'json',
jsonpCallback: 'json'
});
};
// Then I processed results in something like:
var getResult = function(data) {
// do smtg with data
var result = {'myobject' : result_from_data}
return result
}
最后我想给它分配结果。
以下是有效的,但我认为它浪费了 promise 的概念,因为 result 被分配给了一个在它之前声明的全局变量:
var r;
fetch('val1','val2')
.then(function(data){
r = getResult(data);
})
下面的代码将 promise 函数分配给 res
。
var res = fetch('val1','val2')
.done(function(data){
return getResult(data);
})
您能否阐明如何将生成的 'myobject'
传递给变量 res
,而不是 promise 本身?
我也试过:
var res = $.when(fetch('val1','val2'))
.done(function(data){
return getResult(data);
})
但没有成功。
我是一名优秀的程序员,十分优秀!