gpt4 book ai didi

javascript - 如何将 promise 的返回值分配给变量?

转载 作者:可可西里 更新时间:2023-11-01 01:25:19 25 4
gpt4 key购买 nike

<分区>

已编辑为要复制的评论我引用自:[ 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);
})

但没有成功。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com