首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数,如果传入参数,则不异步调用。

函数,如果传入参数,则不异步调用。
EN

Stack Overflow用户
提问于 2014-02-10 11:38:27
回答 1查看 46关注 0票数 0

我正试着玩回调函数。我想要实现回调异步,据我所知,其中一种方法是调用setTimeout函数,使我的同步函数异步。除非我尝试将参数传递给setTimeout中的回调函数,否则效果很好。

这是异步的:

代码语言:javascript
复制
var callback_function = function (funcArg) {
    console.log("From Main Function");
    setTimeout(funcArg, 10); // WATCH THIS LINE
    console.log("From Main Function 2");
};

callback_function(function (arg) {
    console.log("From Callback");
    console.log(arg);
});

console.log("This should run before callback");

输出:

从主要功能

来自主要职能2

这应该在回调之前运行。

从回调

未定义

这不是异步:

代码语言:javascript
复制
var callback_function = function (funcArg) {
    console.log("From Main Function");
    setTimeout(funcArg("Test"), 10); // WATCH THIS LINE
    console.log("From Main Function 2");
};

callback_function(function (arg) {
    console.log("From Callback");
    console.log(arg);
});

console.log("This should run before callback");

输出:

从主要功能

从回调

测试

来自主要职能2

这应该在回调之前运行。

知道为什么会这样吗?在传递参数的情况下,如何异步运行该函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-10 11:40:04

您不是将一个函数传递给setTimeout,而是调用您的函数并传递结果。

变化

代码语言:javascript
复制
setTimeout(funcArg("Test"), 10);

代码语言:javascript
复制
setTimeout(function(){ funcArg("Test")}, 10);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21676156

复制
相关文章

相似问题

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