如何从外部函数解决JS承诺?

时间:2018-05-03 21:48:47

标签: javascript promise

我有一个带有异步函数的JS promise。如何从异步函数内部解析或拒绝该函数?这是一个示例代码......

create table `users` (
   `id`INT(11) NOT NULL AUTO_INCREMENT,
   `user_email_address` VARCHAR(250) NOT NULL,
) ENGINE = InnoDB DEFAULT CHARSET = UTF8;

1 个答案:

答案 0 :(得分:3)

您的异步功能需要某种方式让外部世界知道何时有报告内容。一些异步函数需要回调。如果是这种情况,您可以通过一个回复来调用您的承诺resolve()



let promise = new Promise(function(resolve, reject) {
  asynchronousFunction((val) => { // < -- pass a callback into the function
    resolve(val)
  });
}).then(function(response) {
  console.log("recieved: ", response)
});

function asynchronousFunction(cb) {
  //mimic asynchronous action...
  setTimeout(function() {
    cb("some return value") // <-- call the callback here withthe return value
  }, 1000)

}
&#13;
&#13;
&#13;

如果你控制了异步功能,你应该让它直接返回一个承诺:

&#13;
&#13;
function asynchronousFunction() {
  //mimic asynchronous action...
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve("some return value")  withthe return value
    }, 1000)
  })
}

// call it:
asynchronousFunction()
  .then(val => console.log(val))
&#13;
&#13;
&#13;