从函数返回对象响应 - Javascript

时间:2016-07-13 00:26:09

标签: javascript json callback return-value es6-promise

我对异步/同步的区别感到有些困惑。一点点背景,我正在尝试编写一个使用回调和承诺的程序。我试图创建嵌套请求,但是对象的值没有传递这些请求,因此我创建了一个函数,它接受输入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;
  }      

1 个答案:

答案 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);
    });
}