我对异步/同步的区别感到有些困惑。一点点背景,我正在尝试编写一个使用回调和承诺的程序。我试图创建嵌套请求,但是对象的值没有传递这些请求,因此我创建了一个函数,它接受输入JS对象,修改它,然后返回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;
}
答案 0 :(得分:0)
您可以将回调函数传递给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);
});
}