Return 来自函数的对象响应 - Javascript
Return an object response from a function - Javascript
我对asynchronous/synchronous之间的区别有点困惑。一点背景知识,我正在尝试编写一个使用回调和承诺的程序。我试图创建嵌套请求,但对象的值并没有承载这些请求,所以我创建了一个函数,它接受一个 JS 对象的输入,修改它,然后 returns 返回 js 对象。修改将包括一个 API 调用,该调用查找要添加到 JS 对象的另一个字段。
我可以通过类似于此的方法来完成此操作吗:
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);
});
}
我对asynchronous/synchronous之间的区别有点困惑。一点背景知识,我正在尝试编写一个使用回调和承诺的程序。我试图创建嵌套请求,但对象的值并没有承载这些请求,所以我创建了一个函数,它接受一个 JS 对象的输入,修改它,然后 returns 返回 js 对象。修改将包括一个 API 调用,该调用查找要添加到 JS 对象的另一个字段。
我可以通过类似于此的方法来完成此操作吗:
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);
});
}