Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift PromiseKit首先围绕代码,而不是函数调用_Swift_Promisekit - Fatal编程技术网

Swift PromiseKit首先围绕代码,而不是函数调用

Swift PromiseKit首先围绕代码,而不是函数调用,swift,promisekit,Swift,Promisekit,我不想编写一个单独的函数来在第一次调用中返回承诺。我只想写下: firstly { return Promise<Bool> { inSeal in var isOrderHistory = false let importTester = CSVImporter<String>(url: url) importTester?.startImportingRecords(structure:

我不想编写一个单独的函数来在第一次调用中返回承诺。我只想写下:

firstly
{
    return Promise<Bool>
    { inSeal in
        var isOrderHistory = false
        let importTester = CSVImporter<String>(url: url)
        importTester?.startImportingRecords(structure:
            { (inFieldNames) in
                if inFieldNames[2] == "Payment Instrument Type"
                {
                    isOrderHistory = true
                }
            }, recordMapper: { (inRecords) -> String in
                return ""   //  Don't care
            }).onFinish
            { (inItems) in
                inSeal.resolve(isOrderHistory)
            }
    }
}
.then
{ inIsOrderHistory in
    if inIsOrderHistory -> Void
    {
    }
    else
    {
...
首先
{
回报承诺
{inSeal in
var isOrderHistory=false
let importTester=CSVImporter(url:url)
导入器?.startImportingRecords(结构:
{(内场名)在
如果inFieldNames[2]=“付款工具类型”
{
isOrderHistory=true
}
},recordMapper:{(在Records中)->中的字符串
return”“//不在乎
}).onFinish
{(inItems)in
插入解析(isOrderHistory)
}
}
}
.那么
{inIsOrderHistory in in
如果是InSorderHistory->Void
{
}
其他的
{
...
但是我弄错了。
ImportMainWindowController.swift:51:5:对成员“first(execute:)”的引用不明确。

在上面的代码中,CSVImporter在后台队列上运行,并异步调用方法(尽管按顺序)


我不知道
承诺的完整类型规范应该是什么,或者
首先是什么,或者是什么。

根据我的理解,由于您在承诺链中使用
然后是
,因此它也意味着返回承诺,因此您会收到此错误。如果您不打算从下一个step,您可以先使用后直接使用
done

如果您想从
返回承诺,请使用下面的链

firstly {
     Promise<Bool> { seal in
        print("hello")
        seal.fulfill(true)
     }
}.then { (response) in
    Promise<Bool> { seal in
            print(response)
            seal.fulfill(true)
    }
}.done { _ in
    print("done")
}.catch { (error) in
        print(error)
}
我希望这有帮助

更新:

如果您不想返回任何内容,并且
要求您返回
承诺
,您可以返回
承诺
,如下所示

firstly {
            Promise<Bool> { seal in
                print("hello")
                seal.fulfill(true)
            }
        }.done { _ in
                print("done")
        }.catch { (error) in
                print(error)
        }
firstly {
    Promise<Bool> { seal in
        print("hello")
        seal.fulfill(true)
    }
}.then { (response) -> Promise<Void> in
            print(response)
            return Promise()
}.done { _ in
        print("done")
}.catch { (error) in
        print(error)
}
首先{
承诺{盖章
打印(“你好”)
盖章。完成(真实)
}
}.然后{(回应)->承诺
打印(答复)
回报承诺()
}.完成{uuuin
打印(“完成”)
}.catch{(错误)在
打印(错误)
}

是的,这似乎是个问题。但现在我发现我真的想要一个
。然后
什么也不返回,因为我想要在
.done
部分中做其他事情的语义清晰。
。然后
在对象上设置一个属性。显然,它可以返回结果,但似乎我应该能够拥有
。然后,
不会返回任何东西。也许我只是在挑剔?你可以用一个承诺。我已经更新了答案。我希望这有帮助