栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

同步调用异步Javascript函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

同步调用异步Javascript函数

“不要告诉我应该怎么做”正确的方式”之类的”

好。但您确实应该以正确的方式来做…

“我需要一个具体的示例来说明如何使其阻塞…而无需冻结UI。如果在JS中可能发生这种情况。”

不,如果不阻止UI,就无法阻止正在运行的Javascript。

由于缺乏信息,很难提供解决方案,但是一个选择可能是让调用函数进行一些轮询以检查全局变量,然后将回调设置

data
为全局。

function doSomething() {      // callback sets the received data to a global var  function callBack(d) {      window.data = d;  }      // start the async  myAsynchronousCall(param1, callBack);}  // start the functiondoSomething();  // make sure the global is clearwindow.data = null  // start polling at an interval until the data is found at the globalvar intvl = setInterval(function() {    if (window.data) {         clearInterval(intvl);        console.log(data);    }}, 100);

所有这些都假定您可以修改

doSomething()
。我不知道这是不是真的。

如果可以修改它,那么我不知道为什么您不只是传递一个

doSomething()
要从另一个回调中调用的回调,但是我最好在遇到麻烦之前停下来。;)


哎呀 您提供了一个示例,表明它可以正确完成,因此,我将展示该解决方案…

function doSomething( func ) {  function callBack(d) {    func( d );  }  myAsynchronousCall(param1, callBack);}doSomething(function(data) {    console.log(data);});

因为您的示例包含传递给异步调用的回调,所以正确的方法是传递

doSomething()
要从该回调调用的函数。

当然,如果这是回调唯一要做的事情,那么您将直接通过

func

myAsynchronousCall(param1, func);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号