主頁 > 作業系統 > Kubernetes K8S之資源控制器Job和CronJob詳解

Kubernetes K8S之資源控制器Job和CronJob詳解

2020-09-10 00:10:45 作業系統

 

Kubernetes的資源控制器Job和CronJob詳解與示例

 

主機配置規劃

服務器名稱(hostname)系統版本配置內網IP外網IP(模擬)
k8s-master CentOS7.7 2C/4G/20G 172.16.1.110 10.0.0.110
k8s-node01 CentOS7.7 2C/4G/20G 172.16.1.111 10.0.0.111
k8s-node02 CentOS7.7 2C/4G/20G 172.16.1.112 10.0.0.112

 

什么是控制器

kubernetes中內建了很多controller(控制器),這些相當于一個狀態機,用來控制pod的具體狀態和行為,

部分控制器型別如下:
  • ReplicationController 和 ReplicaSet
  • Deployment
  • DaemonSet
  • StatefulSet
  • Job/CronJob
  • HorizontalPodAutoscaler

 

Job

負責批處理任務

Job創建一個或多個Pod,并確保指定數量的Pod成功終止,Pod成功完成后,Job將跟蹤成功完成的情況,當達到指定的成功完成次數時,任務(即Job)就完成了,洗掉Job將清除其創建的Pod,

一個簡單的情況是創建一個Job物件,以便可靠地運行一個Pod來完成,如果第一個Pod發生故障或被洗掉(例如,由于節點硬體故障或節點重啟),則Job物件將啟動一個新的Pod,

當然還可以使用Job并行運行多個Pod,

 

Job終止和清理

Job完成后,不會再創建其他Pod,但是Pod也不會被洗掉,這樣使我們仍然可以查看已完成容器的日志,以檢查是否有錯誤、警告或其他診斷輸出,Job物件在完成后也將保留下來,以便您查看其狀態,

當我們洗掉Job物件時,對應的pod也會被洗掉,

特殊說明

  • 單個Pod時,默認Pod成功運行后Job即結束
  • restartPolicy 僅支持Never和OnFailure
  • .spec.completions 標識Job結束所需要成功運行的Pod個數,默認為1
  • .spec.parallelism 標識并行運行的Pod個數,默認為1
  • .spec.activeDeadlineSeconds 為Job的持續時間,不管有多少Pod創建,一旦作業到指定時間,所有的運行pod都會終止且作業狀態將成為type: Failed與reason: DeadlineExceeded,

 

CronJob

Cron Job 創建是基于時間調度的 Jobs

一個 CronJob 物件就像 crontab (cron table) 檔案中的一行,它用 Cron 格式進行撰寫,并周期性地在給定的調度時間執行 Job,

 

CronJob 限制

CronJob 創建 Job 物件,每個 Job 的執行次數大約為一次, 之所以說 “大約” ,是因為在某些情況下,可能會創建兩個 Job,或者不會創建任何 Job,雖然試圖使這些情況盡量少發生,但不能完全杜絕,因此,Job 應該是冪等的,

CronJob 僅負責創建與其調度時間相匹配的 Job,而 Job 又負責管理其代表的 Pod,

使用案例:

1、在給定時間點調度Job

2、創建周期性運行的Job,如:資料備份、數倉導數、執行任務、郵件發送、資料拉取、資料推送

 

特殊說明

.spec.schedule 必選,任務被創建和執行的調度時間,同Cron格式串,例如 0 * * * *,

  • .spec.jobTemplate 必選,任務模版,它和 Job的語法完全一樣
  • .spec.startingDeadlineSeconds 可選的,默認未設定,它表示任務如果由于某種原因錯過了調度時間,開始該任務的截止時間的秒數,過了截止時間,CronJob 就不會開始任務,不滿足這種最后期限的任務會被統計為失敗任務,如果沒有該宣告,那任務就沒有最后期限,
  • .spec.concurrencyPolicy 可選的,它宣告了 CronJob 創建的任務執行時發生重疊如何處理,spec 僅能宣告下列規則中的一種:

Allow (默認):CronJob 允許并發任務執行,

Forbid:CronJob 不允許并發任務執行;如果新任務的執行時間到了而老任務沒有執行完,CronJob 會忽略新任務的執行,

Replace:如果新任務的執行時間到了而老任務沒有執行完,CronJob 會用新任務替換當前正在運行的任務,

請注意,并發性規則僅適用于相同 CronJob 創建的任務,如果有多個 CronJob,它們相應的任務總是允許并發執行的,

  • .spec.suspend 可選的,如果設定為 true ,后續發生的執行都會掛起,這個設定對已經開始執行的Job不起作用,默認是關閉的false,
    備注:在調度時間內掛起的執行都會被統計為錯過的任務,當 .spec.suspend 從 true 改為 false 時,且沒有開始的最后期限,錯過的任務會被立即調度,
  • .spec.successfulJobsHistoryLimit 和 .spec.failedJobsHistoryLimit 可選的, 這兩個宣告了有多少執行完成和失敗的任務會被保留,默認設定為3和1,限制設定為0代表相應型別的任務完成后不會保留,

說明:如果 startingDeadlineSeconds 設定為很大的數值或未設定(默認),并且 concurrencyPolicy 設定為 Allow,則作業將始終至少運行一次,

 

Job示例

yaml檔案

 1 [[email protected] controller]# pwd
 2 /root/k8s_practice/controller
 3 [[email protected] controller]# cat job.yaml 
 4 apiVersion: batch/v1
 5 kind: Job
 6 metadata:
 7   name: pi
 8 spec:
 9   #completions: 3  # 標識Job結束所需要成功運行的Pod個數,默認為1
10   template:
11     spec:
12       containers:
13       - name: pi
14         image: registry.cn-beijing.aliyuncs.com/google_registry/perl:5.26
15         command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
16       restartPolicy: Never
17   backoffLimit: 4

 

創建job,與狀態查看

1 [[email protected] controller]# kubectl apply -f job.yaml 
2 job.batch/pi created
3 [[email protected] controller]# kubectl get job -o wide
4 NAME   COMPLETIONS   DURATION   AGE   CONTAINERS   IMAGES                                                       SELECTOR
5 pi     0/1           16s        16s   pi           registry.cn-beijing.aliyuncs.com/google_registry/perl:5.26   controller-uid=77004357-fd5e-4395-9bbb-cd0698e19cb9
6 [[email protected] controller]# kubectl get pod -o wide
7 NAME       READY   STATUS              RESTARTS   AGE   IP       NODE         NOMINATED NODE   READINESS GATES
8 pi-6zvm5   0/1     ContainerCreating   0          85s   <none>   k8s-node01   <none>           <none>

 

之后再次查看

 1 [[email protected] controller]# kubectl get job -o wide
 2 NAME   COMPLETIONS   DURATION   AGE   CONTAINERS   IMAGES                                                       SELECTOR
 3 pi     1/1           14m        44m   pi           registry.cn-beijing.aliyuncs.com/google_registry/perl:5.26   controller-uid=77004357-fd5e-4395-9bbb-cd0698e19cb9
 4 [[email protected] controller]# kubectl get pod -o wide
 5 NAME       READY   STATUS      RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
 6 pi-6zvm5   0/1     Completed   0          44m   10.244.4.63   k8s-node01   <none>           <none>
 7 [[email protected]master controller]# 
 8 [[email protected]master controller]# kubectl describe job pi
 9 Name:           pi
10 Namespace:      default
11 Selector:       controller-uid=76680f6f-442c-4a09-91dc-c3d4c18465b0
12 Labels:         controller-uid=76680f6f-442c-4a09-91dc-c3d4c18465b0
13                 job-name=pi
14 Annotations:    kubectl.kubernetes.io/last-applied-configuration:
15                   {"apiVersion":"batch/v1","kind":"Job","metadata":{"annotations":{},"name":"pi","namespace":"default"},"spec":{"backoffLimit":4,"
16 Parallelism:    1
17 Completions:    1
18 Start Time:     Tue, 11 Aug 2020 23:34:44 +0800
19 Completed At:   Tue, 11 Aug 2020 23:35:02 +0800
20 Duration:       18s
21 Pods Statuses:  0 Running / 1 Succeeded / 0 Failed
22 Pod Template:
23   Labels:  controller-uid=76680f6f-442c-4a09-91dc-c3d4c18465b0
24            job-name=pi
25   Containers:
26    pi:
27     Image:      registry.cn-beijing.aliyuncs.com/google_registry/perl:5.26
28     Port:       <none>
29     Host Port:  <none>
30     Command:
31       perl
32       -Mbignum=bpi
33       -wle
34       print bpi(2000)
35     Environment:  <none>
36     Mounts:       <none>
37   Volumes:        <none>
38 Events:
39   Type    Reason            Age    From            Message
40   ----    ------            ----   ----            -------
41   Normal  SuccessfulCreate  2m33s  job-controller  Created pod: pi-6zvm5

 

并查看 Pod 的標準輸出

1 [[email protected] controller]# kubectl logs --tail 500 pi-6zvm5
2 3.141592653589793238462643383279502884197169399375105820974944592307816406………………

 

CronJob示例

yaml檔案

 1 [[email protected] controller]# pwd
 2 /root/k8s_practice/controller
 3 [[email protected] controller]# cat cronjob.yaml 
 4 apiVersion: batch/v1beta1
 5 kind: CronJob
 6 metadata:
 7   name: hello
 8 spec:
 9   schedule: "*/1 * * * *"
10   jobTemplate:
11     spec:
12       template:
13         spec:
14           containers:
15           - name: hello
16             image: registry.cn-beijing.aliyuncs.com/google_registry/busybox:1.24
17             args:
18             - /bin/sh
19             - -c
20             - date; echo Hello from the Kubernetes cluster
21           restartPolicy: OnFailure

 

啟動cronjob并查看狀態

 1 [[email protected] controller]# kubectl apply -f cronjob.yaml 
 2 cronjob.batch/hello created
 3 [[email protected] controller]# kubectl get cronjob -o wide
 4 NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE   CONTAINERS   IMAGES                                                          SELECTOR
 5 hello   */1 * * * *   False     1        8s              27s   hello        registry.cn-beijing.aliyuncs.com/google_registry/busybox:1.24   <none>
 6 [[email protected]master controller]# 
 7 [[email protected] controller]# kubectl get job -o wide
 8 NAME               COMPLETIONS   DURATION   AGE   CONTAINERS   IMAGES                                                          SELECTOR
 9 hello-1590721020   1/1           2s         21s   hello        registry.cn-beijing.aliyuncs.com/google_registry/busybox:1.24   controller-uid=9e0180e8-8362-4a58-8b93-089b92774b5e
10 [[email protected]master controller]# 
11 [[email protected] controller]# kubectl get pod -o wide
12 NAME                     READY   STATUS      RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
13 hello-1590721020-m4fr8   0/1     Completed   0          36s   10.244.4.66   k8s-node01   <none>           <none>

 

幾分鐘之后的狀態資訊

 1 [[email protected] controller]# kubectl get cronjob -o wide
 2 NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE     CONTAINERS   IMAGES                                                          SELECTOR
 3 hello   */1 * * * *   False     0        55s             7m14s   hello        registry.cn-beijing.aliyuncs.com/google_registry/busybox:1.24   <none>
 4 [[email protected]master controller]# 
 5 [[email protected]master controller]# 
 6 [[email protected] controller]# kubectl get job -o wide
 7 NAME               COMPLETIONS   DURATION   AGE    CONTAINERS   IMAGES                                                          SELECTOR
 8 hello-1590721260   1/1           1s         3m1s   hello        registry.cn-beijing.aliyuncs.com/google_registry/busybox:1.24   controller-uid=0676bd6d-861b-440b-945b-4b2704872728
 9 hello-1590721320   1/1           2s         2m1s   hello        registry.cn-beijing.aliyuncs.com/google_registry/busybox:1.24   controller-uid=09c1902e-76ef-4731-b3b4-3188961c13e9
10 hello-1590721380   1/1           2s         61s    hello        registry.cn-beijing.aliyuncs.com/google_registry/busybox:1.24   controller-uid=f30dc159-8905-4cfc-b06b-f950c8dcfc28
11 [[email protected]master controller]# 
12 [[email protected] controller]# kubectl get pod -o wide
13 NAME                     READY   STATUS      RESTARTS   AGE    IP            NODE         NOMINATED NODE   READINESS GATES
14 hello-1590721320-m4pxf   0/1     Completed   0          2m6s   10.244.4.70   k8s-node01   <none>           <none>
15 hello-1590721380-wk7jh   0/1     Completed   0          66s    10.244.2.77   k8s-node02   <none>           <none>
16 hello-1590721440-rcx7v   0/1     Completed   0          6s     10.244.4.72   k8s-node01   <none>           <none>
17 [[email protected]master controller]# 
18 [[email protected]master controller]# kubectl describe cronjob hello
19 Name:                          hello
20 Namespace:                     default
21 Labels:                        <none>
22 Annotations:                   kubectl.kubernetes.io/last-applied-configuration:
23                                  {"apiVersion":"batch/v1beta1","kind":"CronJob","metadata":{"annotations":{},"name":"hello","namespace":"default"},"spec":{"jobTemplate":{"...
24 Schedule:                      */1 * * * *
25 Concurrency Policy:            Allow
26 Suspend:                       False
27 Successful Job History Limit:  3
28 Failed Job History Limit:      1
29 Starting Deadline Seconds:     <unset>
30 Selector:                      <unset>
31 Parallelism:                   <unset>
32 Completions:                   <unset>
33 Pod Template:
34   Labels:  <none>
35   Containers:
36    hello:
37     Image:      registry.cn-beijing.aliyuncs.com/google_registry/busybox:1.24
38     Port:       <none>
39     Host Port:  <none>
40     Args:
41       /bin/sh
42       -c
43       date; echo Hello from the Kubernetes cluster
44     Environment:     <none>
45     Mounts:          <none>
46   Volumes:           <none>
47 Last Schedule Time:  Wed, 12 Aug 2020 00:01:00 +0800
48 Active Jobs:         <none>
49 Events:
50   Type    Reason            Age                  From                Message
51   ----    ------            ----                 ----                -------
52   Normal  SuccessfulCreate  19m                  cronjob-controller  Created job hello-1597160520
53   Normal  SawCompletedJob   19m                  cronjob-controller  Saw completed job: hello-1597160520, status: Complete
54   Normal  SuccessfulCreate  18m                  cronjob-controller  Created job hello-1597160580
55   Normal  SawCompletedJob   18m                  cronjob-controller  Saw completed job: hello-1597160580, status: Complete
56   Normal  SuccessfulCreate  17m                  cronjob-controller  Created job hello-1597160640
57   Normal  SawCompletedJob   17m                  cronjob-controller  Saw completed job: hello-1597160640, status: Complete
58   Normal  SuccessfulCreate  16m                  cronjob-controller  Created job hello-1597160700
59   Normal  SuccessfulDelete  16m                  cronjob-controller  Deleted job hello-1597160520
60   Normal  SawCompletedJob   16m                  cronjob-controller  Saw completed job: hello-1597160700, status: Complete
61   Normal  SuccessfulCreate  15m                  cronjob-controller  Created job hello-1597160760
62   Normal  SawCompletedJob   15m                  cronjob-controller  Saw completed job: hello-1597160760, status: Complete
63   Normal  SuccessfulDelete  15m                  cronjob-controller  Deleted job hello-1597160580
64   Normal  SuccessfulCreate  14m                  cronjob-controller  Created job hello-1597160820
65   Normal  SuccessfulDelete  14m                  cronjob-controller  Deleted job hello-1597160640
66   Normal  SawCompletedJob   14m                  cronjob-controller  Saw completed job: hello-1597160820, status: Complete
67   Normal  SuccessfulCreate  13m                  cronjob-controller  Created job hello-1597160880
68   Normal  SawCompletedJob   13m                  cronjob-controller  Saw completed job: hello-1597160880, status: Complete
69 ………………
70   Normal  SawCompletedJob   11m                  cronjob-controller  Saw completed job: hello-1597161000, status: Complete
71   Normal  SuccessfulDelete  11m                  cronjob-controller  Deleted job hello-1597160820
72   Normal  SawCompletedJob   10m                  cronjob-controller  (combined from similar events): Saw completed job: hello-1597161060, status: Complete
73   Normal  SuccessfulCreate  4m13s (x7 over 10m)  cronjob-controller  (combined from similar events): Created job hello-1597161420

 

找到最后一次調度任務創建的 Pod, 并查看 Pod 的標準輸出,請注意任務名稱和 Pod 名稱是不同的,

1 [[email protected] controller]#  kubectl logs pod/hello-1590721740-rcx7v   # 或者 kubectl logs hello-1590721740-rcx7v
2 Fri May 29 03:09:04 UTC 2020
3 Hello from the Kubernetes cluster

 

洗掉 CronJob

1 [[email protected]master controller]# kubectl get cronjob
2 NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
3 hello   */1 * * * *   False     0        32s             19m
4 [[email protected]master controller]# 
5 [[email protected] controller]# kubectl delete cronjob hello  # 或者 kubectl delete -f cronjob.yaml
6 cronjob.batch "hello" deleted
7 [[email protected]master controller]# kubectl get cronjob   # 可見已洗掉
8 No resources found in default namespace.

 

相關閱讀

1、Kubernetes K8S之資源控制器RC、RS、Deployment詳解

2、Kubernetes K8S之資源控制器StatefulSets詳解

3、Kubernetes K8S之資源控制器Daemonset詳解

4、官網:Jobs

5、官網:CronJob

 

完畢!

 


 

 

———END———
如果覺得不錯就關注下唄 (-^O^-) !

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/157.html

標籤:Linux

上一篇:CA和證書

下一篇:VMware下安裝CentOS

標籤雲
其他(123570) Java(13369) Python(12729) C(7542) 區塊鏈(7372) JavaScript(7048) 基礎類(6313) AI(6244) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4120) MySQL(4012) Linux(3394) C語言(3288) C++語言(3117) Java相關(2746) 疑難問題(2699) 單片機工控(2479) Web開發(1951) 網絡通信(1793) 數據庫相關(1767) VB基礎類(1755) PHP(1727) 開發(1646) 系統維護與使用區(1617) .NETCore(1586) 基礎和管理(1579) JavaEE(1566) C++(1527) 專題技術討論區(1515) Windows客戶端使用(1484) HtmlCss(1466) ASP.NET(1428) Unity3D(1354) VCL組件開發及應用(1353) HTML(CSS)(1220) 其他技術討論專區(1200) WindowsServer(1192) .NET技术(1165) 交換及路由技術(1149) 語言基礎算法系統設計(1133) WindowsSDKAPI(1124) 界面(1088) JavaSE(1075) Qt(1074) VBA(1048) 新手樂園(1016) 其他開發語言(947) Go(907) HTML5(901) 新技術前沿(898) 硬件設計(872) 區塊鏈技術(860) 網絡編程(857) 非技術版(846) 一般軟件使用(839) 網絡協議與配置(835) Eclipse(790) Spark(750) 下載資源懸賞專區(743)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [[email protected] flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • 關閉IHostedService

    我正在嘗試開發一個異步、多執行緒的 .NET Core 控制臺應用程式,但是在實作教程中的代碼后,一旦開始實作,代碼就會關閉Microsoft.Hosting.Lifetime:資訊:應用程式正在關閉開始撰...

    uj5u.com 2021-10-16 16:45:36 more
  • NodeJsAsync沒有以正確的順序運行并跳過承諾

    我目前在使用 async/await 語法時遇到問題。在過去的 2 天里,我試圖找出原因并最終決定詢問。我正在嘗試運行一個 cron 函式(測驗),該函式呼叫一個連接到資料庫的異步函式,并嘗試...

    uj5u.com 2021-10-16 16:45:00 more
  • Dart中按佇列執行順序異步回傳同步呼叫的Futures

    void main() async { Future<void> asyncFunction(time, value) async { return await Future.delayed(Duration(seconds: time), () => print(value)); } print('1')...

    uj5u.com 2021-10-16 16:44:29 more
  • 在從eval()回傳之前如何等待回呼?

    我有一個 node.js 腳本,它從檔案中讀取一些 JS 代碼,并將其傳遞給eval(). 將 javascript 傳遞給 eval 的代碼如下:// read javascript code from filevar outputbuffer = '';fu...

    uj5u.com 2021-10-16 16:43:50 more
  • 除非verifyPhoneNumber方法完成,否則不想完成Future

    我想驗證一個用戶的電話號碼,然后只允許該用戶注冊。但是為此,verifyPhoneNumber即使我申請await,當我打電話時也不會等到驗證完成。它執行下一行。所以我想要做的是除非verifi...

    uj5u.com 2021-10-16 16:43:18 more
  • jsx內部的異步函式呼叫

    我嘗試呼叫該getAuthor函式,內部function (line 24 -console.log)一切正常,但我不知道應該如何getAuthor正確呼叫該函式(第 37 行)。這是一個帶有評論的組件,在我的資料庫中,在我...

    uj5u.com 2021-10-16 16:42:26 more
  • 如何在Flutter中重新加載FutureBuilder?

    我在這里有一個 FutureBuilder :FutureBuilder<List<Task>>( future: getTasks(), builder...

    uj5u.com 2021-10-16 16:41:32 more
  • 在函式中回傳新承諾與直接在async/await中使用新承諾?

    當我使用此函式創建 3 個不同的承諾時:const setTimer = (num) => { return new Promise((res, rej) => { setTimeout(() => { res(num) }, 2000); })} 然后在...

    uj5u.com 2021-10-16 16:40:54 more
  • Dart可選引數為空型別

    我試圖在我的 dart 函式中使用可選引數默認值,但它導致錯誤 Error: Not a constant expression.我試圖通過將我的變數插入一個回傳 的 lambda 函式來解決int,但它沒有用。看我...

    uj5u.com 2021-10-16 16:40:11 more
  • React-在useContext回傳值后加載組件

    所以我有Dashboard應該顯示currentUsers資訊的組件。我把我的currentUserin global context/state.問題是當Dashboard組件第一次呈現時currentUser,null即使用戶實際上已登錄...

    uj5u.com 2021-10-16 16:39:23 more