javascript:承诺问题

javascript:承诺问题,javascript,jquery,Javascript,Jquery,这是我的密码 function m1() { return new Promise(function(resolve, reject) { var files = $('#aws-upload-files')[0].files; if (files.length > 0) { for (var i = 0; i < files.length; i++) { loadFile(files[i], $('#filecategory' + i

这是我的密码

function m1() {
  return new Promise(function(resolve, reject) {
    var files = $('#aws-upload-files')[0].files;
    if (files.length > 0) {
      for (var i = 0; i < files.length; i++) {
        loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
      }
    }
  })
}

function submitFileUpload() {
  $('#aws-upload-submit').click(function() {
    m1().then(function(result) {
      console.log('~~~ success here ');
      window.location = 'https://example.com/';
    })
      .catch(function(error) {
      console.log('Error');
    })
  })
}

$(function() {
  submitFileUpload();
})
函数m1(){
返回新承诺(功能(解决、拒绝){
var files=$('#aws上载文件')[0]。文件;
如果(files.length>0){
对于(var i=0;i
单击按钮“
#aws upload submit
”时,调用函数
m1()

函数
m1()
返回一个承诺

.then()
中,我检查承诺是否返回成功,如果成功,我将浏览器重定向到

在我的例子中,当单击按钮时,调用
m1()
,函数成功运行,但没有创建任何承诺或
。然后()
根本不起作用

尽管
m1()
正在按预期工作,但我根本没有看到任何console.log声明
“~~~~此处成功


有人能告诉我我的承诺有什么问题吗?

新承诺的回调中
你没有决定不拒绝承诺,所以你的承诺一直在等待

你需要这样做

function m1() {

    return new Promise(function(resolve, reject) {
        var files = $('#aws-upload-files')[0].files;

        if (files.length > 0) {
            for (var i = 0; i < files.length; i++) {
                loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
            }
            resolve("loaded")
        } else {
            reject("no files")
        }
    })

}
函数m1(){
返回新承诺(功能(解决、拒绝){
var files=$('#aws上载文件')[0]。文件;
如果(files.length>0){
对于(var i=0;i
函数完成后,需要调用
解析方法

function m1()
{

return new Promise(function(resolve, reject) 
                   {
                       var files = $('#aws-upload-files')[0].files;

                            if(files.length > 0){
                            for(var i=0; i<files.length; i++)
                            {                                                      
                             loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
                            }
                          }
                })
resolve();


}      
函数m1()
{
返回新承诺(功能(解决、拒绝)
{
var files=$('#aws上载文件')[0]。文件;
如果(files.length>0){

对于(var i=0;i,您需要解析承诺或拒绝它,因此您必须这样编写代码

function m1() {

    return new Promise(function(resolve, reject) {
        var files = $('#aws-upload-files')[0].files;

        if (files.length > 0) {
            for (var i = 0; i < files.length; i++) {
                loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
            }
            resolve("loaded")
        } else {
            reject("no files")
        }
    })

}

阅读:


函数m1(){
返回新承诺(功能(解决、拒绝){
var files=$('#aws上载文件')[0]。文件;
如果(files.length>0){
对于(var i=0;iconsole.log(“任务完成!”),
()=>console.log(“任务出错!”),
);

因为
loadFile
似乎是同步的,所以在这里使用承诺没有意义-直接从
m1
返回成功或失败

function m1() {
  var files = $('#aws-upload-files')[0].files;
  if (files.length < 0) return false;
  for (var i = 0; i < files.length; i++) {
    loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
  }
  return true;
}
const succeeded = m1();
console.log(succeeded ? "Task Complete!" : "Task Errored!")
函数m1(){
var files=$('#aws上载文件')[0]。文件;
如果(files.length<0)返回false;
对于(var i=0;i
您永远不会解决承诺;在代码中,您永远不会调用
resolve
。什么是
loadFile
?loadFile是另一种方法…让我来看看解决方法..tx
function m1() {
  var files = $('#aws-upload-files')[0].files;
  if (files.length < 0) return false;
  for (var i = 0; i < files.length; i++) {
    loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
  }
  return true;
}
const succeeded = m1();
console.log(succeeded ? "Task Complete!" : "Task Errored!")