A data transmission method, comprising: transmitting, by a terminal device, a scheduling request, wherein the scheduling request comprises information about at least one first transport block; receiving, by the terminal device, scheduling information on a first time resource; determining, by the terminal device, a target time resource, wherein the target time resource comprises a second time resource or a third time resource, and a time interval between the second time resource and the first time resource is greater than a time interval between the third time resource and the first time resource; and transmitting, by the terminal device, a second transport block on the target time resource based on the scheduling information, wherein the second transport block is at least one transport block in the at least one first transport block or is at least one transport block other than the at least one first transport block, the at least one first transport block corresponds to the third time resource, and the at least one transport block other than the at least one first transport block corresponds to the second time resource, wherein the information about the at least one first transport block is used to indicate that a size of the at least one first transport block is not greater than a first threshold, wherein the first threshold is a value corresponding to a preset transport block size, or a preset value, or a value corresponding to a transport block size configured by using higher layer signaling; or the information about the at least one first transport block is used to indicate a size and/or a quantity of the at least one first transport block. transmitting, by a terminal device, a scheduling request, wherein the scheduling request comprises information about at least one first transport block; receiving, by the terminal device, scheduling information on a first time resource; determining, by the terminal device, a target time resource, wherein the target time resource comprises a second time resource or a third time resource, and a time interval between the second time resource and the first time resource is greater than a time interval between the third time resource and the first time resource; and transmitting, by the terminal device, a second transport block on the target time resource based on the scheduling information, wherein the second transport block is at least one transport block in the at least one first transport block or is at least one transport block other than the at least one first transport block, the at least one first transport block corresponds to the third time resource, and the at least one transport block other than the at least one first transport block corresponds to the second time resource, wherein the information about the at least one first transport block is used to indicate that a size of the at least one first transport block is not greater than a first threshold, wherein the first threshold is a value corresponding to a preset transport block size, or a preset value, or a value corresponding to a transport block size configured by using higher layer signaling; or the information about the at least one first transport block is used to indicate a size and/or a quantity of the at least one first transport block.