OnClick后的返回值

时间:2017-06-12 20:34:25

标签: javascript jquery promise jquery-deferred

我正在尝试从按钮单击中检索值并将其存储在变量中。问题是用户可以任意点击按钮,我试图在运行时记录按钮点击的结果。我一直在阅读有关承诺的内容,如果有必要,我不知道如何在我当前的代码中实现它们。我不确定我是否应该担心返回结果而是将变量传递给下一个函数调用。

startGame()

$("document").ready(function() {

  /*
  My thought process was to record the icon in the "elements" object
  and then call buildBoard() from the document.ready() function after the 
  user had clicked the button
  */

  let elements = {};
  var deferred = $.Deferred();

  deferred
    .then(function() {
      return startGame();
    })
    .done(function(icon) {
      console.log(icon);
    });

  deferred.resolve();
});

db_setup = 'mysql+pymysql://{0}:{1}@{2}:{3}/{4}?charset=utf8'.format(
    os.environ.get("USERNAME"),
    os.environ.get("PASSWORD"),
    os.environ.get("HOST"),
    os.environ.get("PORT"),
    os.environ.get("DATABASE")
)

engine = create_engine(db_setup, echo=True)
Session = sessionmaker(bind=engine, expire_on_commit=True, autoflush=False)
session = Session()

Base = declarative_base()

1 个答案:

答案 0 :(得分:1)

使用promises看起来像这样:

var chooseSide=new Promise(function(resolve){
  $("#play_btn").click(function() {
     if ($(".icons i").hasClass("selected")) {
       $("h5").remove();
       $(".icons").remove();
       $("button").remove();
       var icon="x";//todo
       resolve(icon);
       }
     });
});

所以你可以做到

chooseSide.then(function(side){
   alert("you chose:"+side);
   startGame(side);
});

但是,我不知道这是否真的有用。