首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何处理回调函数响应?

如何处理回调函数响应?
EN

Stack Overflow用户
提问于 2018-06-07 03:48:19
回答 2查看 616关注 0票数 0

我理解异步特性的行为,但是我的其他同步代码依赖于回调的返回值。我如何重新格式化代码来实现这一点。

模块A

代码语言:javascript
复制
export function processData(callback){
    var value = "TEST";
    callback(value);
}

模块B

代码语言:javascript
复制
import { processData } from './A.js';

var resultValue = ''; /*global variable */
function dataFetcher(){

    processData(getData);

    // define callback
    function getData(x){
        console.log(" I got x : "+x); /* prints TEST */
        sendData(x);
    }

    //called from callback function
    function sendData(data){
        resultValue = data;
    }
}

console.log(" print resultValue : "+resultValue); /* prints empty string */

感谢您的时间和建议。

EN

回答 2

Stack Overflow用户

发布于 2018-06-07 03:52:22

你可以在这里使用async/await。喜欢

代码语言:javascript
复制
async function() {
 resultValue = await yourAsyncCallBack();
  console.log(resultValue);

}();

确保你的yourAsyncCallBack返回一个承诺。

票数 0
EN

Stack Overflow用户

发布于 2018-06-07 03:57:09

因为代码中的一个(或几个)函数是异步的,所以回调函数会延迟运行,但您的console.log会立即在主线程中调用。因此,要解决此问题,您可以像这样更改代码:

代码语言:javascript
复制
import { processData } from './A.js';

var resultValue = ''; /*global variable */
function dataFetcher(){

    processData(getData);

    // define callback
    function getData(x){
        console.log(" I got x : "+x); /* prints TEST */
        sendData(x);
    }

    //called from callback function
    function sendData(data){
        resultValue = data;
        done();
    }
}

function done() {
  console.log(" print resultValue : "+resultValue);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50728427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档