【问题标题】:How can I call one function after executing before calling function complete execution in javascript [duplicate]在javascript中调用函数完成执行之前,如何在执行后调用一个函数[重复]
【发布时间】:2018-11-28 14:15:03
【问题描述】:

我的情况是:

var data = getData();

function getData(){
    return 8;
}

function closePopup(){
    console.log('close popup executed');
} 

这里我想在getData()函数的完整执行上像同步一样调用closePopup方法。

谢谢 蓝巴布B

【问题讨论】:

  • 什么是getData ??
  • getData() 是一个函数,抱歉我忘了添加问题。

标签: javascript angularjs


【解决方案1】:

您可以使用async 函数来等待Promise

function closePopup() {
  console.log("Closing popUp");
}

function getData() {
  return new Promise(resolve => {
    setTimeout(function() { //This is to simulate an async call (Like Ajax)
      resolve("Called");
    }, 2000);
  });
}

async function main() { // This is the async function
  console.log('Waiting 2 secs...');
  var data = await getData();
  console.log(data);
  closePopup();
  
  return "Some value if you want!"
}

main().then(v => console.log(v)); //An async function returns a Promise.

资源

【讨论】:

  • 由于问题是用AngularJS标记的,Promise可以替换为$qsetTimeout可以替换为$timeout
  • 我只想记住你一周前写的关于“绝对偏离主题”的问题的评论,应该关闭而不回答,因为 OP 没有显示任何研究工作...
  • @AlekseySolovey 是的,但这是展示异步函数如何工作的指南。
  • @JonasW。 你在说这个吗: 社区回答这种问题的次数太多了。我不明白为什么!...很多类似的问题都已关闭,因为 OP 没有表现出任何努力。这很有趣,社区如何回答这个问题,有时会关闭它。这取决于人们醒来时是否有“帮助”的意图。所有这些类型的答案都应该被关闭!...它们太不同了。这一个是关于一个疑问。我评论的那个问题是关于家庭作业的问题! 就像我说的: 这取决于社区希望在特定时间提供何种帮助
【解决方案2】:

你可以在getData()函数或者getData()函数内部使用promise调用函数,这会返回一个promise,你可以在这里解决。

var data = getData();
Promise.resolve(data).then(function(value) {
  studentdata = value;
  closePopup();
});

【讨论】:

  • eshunsharma 你能提供一些javascript和angularjs的例子吗?
  • @RambabuBommisetti 更新了一个例子,你不需要在这里使用 Angular。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 2020-01-31
  • 2014-06-10
相关资源
最近更新 更多