从函数返回对象响应-Javascript
异步/同步之间的区别让我有点困惑。有一点背景知识,我正在尝试编写一个使用回调和承诺的程序。我试图创建嵌套的请求,但是对象的值没有传递这些请求,所以我创建了一个函数,该函数接受JS对象的输入,修改它,然后返回JS对象。修改将包括一个API调用,该调用查找要添加到JS对象的另一个字段 我可以通过类似的方法来实现这一点:从函数返回对象响应-Javascript,javascript,json,callback,return-value,es6-promise,Javascript,Json,Callback,Return Value,Es6 Promise,异步/同步之间的区别让我有点困惑。有一点背景知识,我正在尝试编写一个使用回调和承诺的程序。我试图创建嵌套的请求,但是对象的值没有传递这些请求,所以我创建了一个函数,该函数接受JS对象的输入,修改它,然后返回JS对象。修改将包括一个API调用,该调用查找要添加到JS对象的另一个字段 我可以通过类似的方法来实现这一点: TEST1 function(....){ // do stuff request.get(options, function(error, re
TEST1 function(....){
// do stuff
request.get(options, function(error, response, body) {
// do stuff to get js object
jsobject = objectModification(jsobject); //modified js object
});
}
objectModification function(jsobject) {
request.get(options, function(error, response, body) {
// do stuff to modify js object
});
return jsobject;
}
您可以将回调函数传递给
objectModification
,以便在jsobject
的最终版本准备就绪时通知调用者,以及它是什么:
function TEST1(....){
var options = { ... };
request.get(options, function(error, response, body) {
// do stuff to get js object, for example:
jsobject = response;
// modify jsobject asynchronously:
objectModification(jsobject, function (jsobject) {
// here we have the final version of jsobject.
});
});
}
function objectModification(jsobject, done) {
var options = { ... };
request.get(options, function(error, response, body) {
// do stuff to modify js object, for example:
jsobject.newProperty = response;
// Then call callback function to pass the modified js object
done(jsobject);
});
}
您可以将回调函数传递给
objectModification
,以便在jsobject
的最终版本准备就绪时通知调用者,以及它是什么:
function TEST1(....){
var options = { ... };
request.get(options, function(error, response, body) {
// do stuff to get js object, for example:
jsobject = response;
// modify jsobject asynchronously:
objectModification(jsobject, function (jsobject) {
// here we have the final version of jsobject.
});
});
}
function objectModification(jsobject, done) {
var options = { ... };
request.get(options, function(error, response, body) {
// do stuff to modify js object, for example:
jsobject.newProperty = response;
// Then call callback function to pass the modified js object
done(jsobject);
});
}
我认为你的函数调用应该是<代码>jsobject=objectModification(响应)代码>。。。如果你使用承诺,这可能会简单得多…这会奏效吗?当我使用上面解释的函数方法时,它不断返回“未识别”,我看不出您正在执行的请求是什么。。。所以,如果你得到
未定义的
,那是因为这是你从请求中得到的。。。什么是请求
?,你在点击什么url?。代码缺少提供更精确解决方案的关键部分。据我所知,请求很好地更新了对象,但是整个JS对象没有从函数“objectmodification”传递到test1,它正在丢失它的值并更改为未定义您无法从回调函数返回结果我认为您的函数调用应该是<代码>jsobject=objectModification(响应)代码>。。。如果你使用承诺,这可能会简单得多…这会奏效吗?当我使用上面解释的函数方法时,它不断返回“未识别”,我看不出您正在执行的请求是什么。。。所以,如果你得到未定义的
,那是因为这是你从请求中得到的。。。什么是请求
?,你在点击什么url?。代码缺少提供更精确解决方案的关键部分。据我所知,请求更新对象很好,但是整个JS对象没有从函数“objectmodification”传递到test1,它正在丢失其值并更改为undefinedyou无法从回调函数返回结果